说我有以下 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(例如,通过基于cust-id值进行数据库查询)。 对我来说不太清楚的是为什么我们需要 getAsString 方法以及如何使用它。在通常情况下,这不是关于 getAsString 在转换器中的作用的问题,即在 .xhtml 视图UI元素与支持bean之间的绑定很简单。我还读过here我们可以将 f:viewParam 视为GET参数的UI输入元素,但转换器在相反方向的作用对我来说没有意义
答案 0 :(得分:1)
在getAsString()
的情况下确实不使用<f:viewParam>
,但现有转换器可以重用用于真正使用getAsString()
的其他组件。
E.g。
<h:outputText value="#{CustomerCEVController.customer}" converter="#{customerConverter}" />
或
<h:selectOneMenu value="#{CustomerCEVController.customer}" converter="#{customerConverter}">
<f:selectItems value="#{data.customers}" />
</h:selectOneMenu>
由您决定是否按its contract实施getAsString()
。如果不这样做,那么您的转换器根本不可用于其他组件。