0

次のf:viewParam定義があるとします。

<f:metadata>
    <f:viewParam name="cust-id" value="#{CustomerCEVController.customer}" 
        converter="#{customerConverter}" converterMessage="Unknown customer, please use a link from within the system."
        required="true" requiredMessage="cust-id f:viewParam not present"
    />
</f:metadata>

URLに「?cust-id = 2342」パラメーターを指定して目的のページに移動します。したがって、コンバーターでのgetAsObjectメソッドの役割は、バッキングBeanのCustomerフィールドを明らかにインスタンス化することです(たとえば、DBクエリベースを実行することによって) cust-id値について)。私にはあまり明確ではないのは、getAsStringメソッドが必要な理由とその使用方法です。これは、通常の場合のコンバーターでのgetAsStringの役割についての質問ではありません。つまり、 .xhtmlビューUI要素と、それらの役割が単純なバッキングBeanとの間のバインディングです。また、 f:viewParamを処理できることもここで読みました。GETパラメーターのUI入力要素としてですが、反対方向のコンバーターの役割は私には意味がありません。

4

1 に答える 1

1

getAsString()場合は実際には使用されません<f:viewParam>が、既存のコンバーターは、実際に使用されている他のコンポーネントに再利用getAsString()できます。

例えば

<h:outputText value="#{CustomerCEVController.customer}" converter="#{customerConverter}" />

また

<h:selectOneMenu value="#{CustomerCEVController.customer}" converter="#{customerConverter}">
    <f:selectItems value="#{data.customers}" />
</h:selectOneMenu>

契約getAsString()どおりに実装するかどうかはあなた次第です。そうしないと、コンバーターを他のコンポーネントで再利用できなくなります。

于 2012-08-02T15:15:21.037 に答える