当我尝试将验证器插入到JSF中包含ajax侦听器的selectOneMenu元素时,ajax侦听器开始无效。以下是我正在讨论的特定问题的JSF snipplet:
<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元素中协同工作,你们会建议我做些什么?
答案 0 :(得分:3)
他们应该一起工作。只有在验证程序引发异常时才会调用ajax侦听器方法。确保您的验证器没有错误地执行此操作。确保您重新呈现与输入组件关联的<h:message>
或<h:messages>
,以便在ajax请求期间收到任何面孔消息的通知。或者至少读取服务器日志,将在那里记录任何排队但未显示的面部消息。