0

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

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

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

--- 编辑--- 正如亚历山大所建议的,我从按钮中取出了 immediate="true",但现在我遇到了验证错误。它在这个领域的具体验证:

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

itemsList 在 myMb 构造函数中被延迟初始化,只有当用户不更改 selectedValue 时才会发生验证错误。如果他更改此值,则不会发生验证错误。

4

1 回答 1

0

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

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

于 2013-05-11T12:01:55.147 回答