【发布时间】:2012-02-17 21:54:06
【问题描述】:
当我尝试向包含 JSF 中的 ajax 侦听器的 selectOneMenu 元素插入验证器时,ajax 侦听器开始无法正常工作。以下是我正在谈论的特定问题的 JSF 片段:
<h:selectOneMenu id="metalCodes" converter="metalCodeConverter" required="true" requiredMessage="#{lang.metalStockIntroducing_metalCode_req_txt}" value="#{metalStockIntroducingProcessesBean.metal.metalCode}">
<f:selectItem itemLabel="Please select..." noSelectionOption="true" />
<f:selectItems value="#{metalStockIntroducingProcessesBean.metalCodesMenu}" />
<f:ajax listener="#{metalStockIntroducingProcessesBean.changeMetalType}" event="change" execute="metalCodes" render="metalTypesMenu" immediate="false"/>
<f:validator validatorId="densityValidator"/>
</h:selectOneMenu>
为了使验证器和 ajax 侦听器在 h:selectOneMenu JSF 元素中协同工作,您的朋友会推荐我做什么?
【问题讨论】:
-
确定验证器不只是抛出验证器异常?顺便说一句,您标记了“ajax4jsf”,但我在任何地方都没有看到 a4j 标记。您是否真的使用 Ajax4jsf(RichFaces 的一部分)?如果您不确定它是什么,请阅读标签描述/信息。
-
亲爱的 BalusC,您是对的。我对 JSF 的了解不足让我写了一些误导性的东西。当我看到页面上的标签时,正确的应该是 A4J。但是,我错了,应该是Ajax。对于误导性信息,我们深表歉意。我不会重蹈覆辙。顺便说一句,你认为我应该怎么做才能解决问题?谢谢...
-
我已经编辑了标签并删除了 A4J 标签。
-
你确定验证器不只是抛出验证器异常吗?
-
实际上,我正在调试模式下开发我的代码,它永远不会落入该组件的验证器类。当我将验证器放入组件时,ajax 侦听器开始无法正常工作,而没有验证器则完全可以正常工作。我在不包括 ajax 侦听器的不同组件中使用了验证器,看起来它工作正常而没有抛出异常,我可以在调试中观察整个过程(实际上是调试)。我认为我无法使其与 ajax 侦听器协作工作,反之亦然。
标签: jsf validation