0

我对包含 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 字段。

在提交表单时/之前提交该字段是否有什么我缺少的?

4

1 回答 1

0

关于<h:inputText>ajax 行为:<f:ajax>与默认事件valueChange一起使用,这是所有输入组件的默认事件。这确实相当于省略了event属性:

<f:ajax render="@this" />

关于<h:commmandButton>组件,不要忘记指定execute属性<f:ajax>

<f:ajax execute="@form" />

否则它将默认为@this,因此会影响您的努力。

于 2013-08-12T13:46:32.440 回答