我有一个包含ajax字段的JSF 2表单的问题。当光标仍在ajaxified输入字段中时,当我使用鼠标按下窗体的提交按钮时,在辅助bean中触发操作之前,不会提交字段的输入值。此外,附加的验证器和转换器也不会被触发。
<h:form id="invoice">
...
<h:inputText value="#{invoiceBean.amount}" required="true" validator="#{invoiceBean.validateAmount}">
<f:converter converterId="CurrencyConverter" />
<f:ajax event="blur" render="@this"/>
</h:inputText>
<h:commandButton action="#{invoiceBean.processInvoice()}" />
</h:form>
我还尝试使用<f:ajax />
增强命令按钮,但结果保持不变。正确提交同一表单上的其他(非ajax)字段(上面的代码片段中未显示)。如果我在提交之前单击页面上的其他位置而不是直接使用按钮时,也会提交,转换和验证ajax字段。
在表单提交之前/之前是否还有任何我遗漏的字段?
答案 0 :(得分:-1)
关于<h:inputText>
ajax行为:使用<f:ajax>
和默认事件 valueChange ,这是所有输入组件的默认事件。这确实等同于省略event
属性:
<f:ajax render="@this" />
关于<h:commmandButton>
组件,请不要忘记指定execute
的{{1}}属性:
<f:ajax>
否则它将默认为<f:ajax execute="@form" />
,因此会为您的努力提供支持。