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 字段(例如,通过基于数据库查询关于 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 回答