发送AJAX请求以在具有操作的commandButton中提交表单

时间:2013-05-11 11:47:47

标签: ajax jsf-2

在我的页面中,我有一个表单,组件从managedBean获取它的值。 然后,页面中的这个按钮是:

<p:commandButton value="Search" action="#{mbProduct.selectBrand}" ajax="false" immediate="true" />

这个按钮的作用是,当我点击它时,它会将用户重定向到品牌页面,这样他就可以选择产品的品牌并返回到产品页面(当用户点击按钮时完全相同)。 问题是,如果我更改表单中inputTexts的任何值,并立即单击“搜索”按钮,则inputText的值不会发送到managedBean,因为在用户单击之前没有ajax请求要执行此操作搜索按钮。 如何避免此行为并在按钮调用其操作之前设置字段值?

--- --- EDIT 正如Alexandre建议的那样,我从按钮中删除了immediate =“true”,但现在我有一个验证错误。 它在这个领域的具体验证:

<p:selectOneMenu value="#{myMb.selectedItem}">
<f:selectItems value="#{myMb.itemsList}" />
</p:selectOneMenu>

itemsList在myMb构造函数中被懒惰地初始化,并且仅当用户不更改selectedValue时才会发生验证错误。如果他改变了这个值,则不会发生验证错误。

1 个答案:

答案 0 :(得分:0)

您应该删除immediate="true",以便在操作之前应用输入。

更多信息:http://balusc.blogspot.ca/2006/09/debug-jsf-lifecycle.html#WhenShouldIUseTheImmediateAttribute