如何在表单提交期间提交JSF ajax字段

时间:2013-08-12 12:58:54

标签: ajax forms jsf jsf-2

我有一个包含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字段。

在表单提交之前/之前是否还有任何我遗漏的字段?

1 个答案:

答案 0 :(得分:-1)

关于<h:inputText> ajax行为:使用<f:ajax>和默认事件 valueChange ,这是所有输入组件的默认事件。这确实等同于省略event属性:

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

关于<h:commmandButton>组件,请不要忘记指定execute的{​​{1}}属性:

<f:ajax>

否则它将默认为<f:ajax execute="@form" /> ,因此会为您的努力提供支持。