hug*_*gri 2 jsf icefaces mojarra
我有以下按钮:
<h:commandButton
disabled="#{mybean.searching}"
binding="#{mybean.searchButton}"
actionListener="#{mybean.searchForLicenses}"
value="Search" />
Run Code Online (Sandbox Code Playgroud)
当我调试时,我看到actionListener首先被调用两次,然后被调用三次,接下来单击四次,依此类推.
似乎每次重新加载时actionListener都会再次注册.
我正在使用Mojarra 2.1.3(也尝试过2.0.6)和Tomcat 7和IceFaces.
绑定是这样完成的:
private javax.faces.component.UICommand searchButton;
public void setSearchButton(UICommand searchButton) {
this.searchButton = searchButton;
}
public UICommand getSearchButton() {
return searchButton;
}
Run Code Online (Sandbox Code Playgroud)
如果您将组件绑定到会话或应用程序范围的bean而不是请求范围的bean,则会发生这种情况.这只是一个糟糕的设计.将在多个请求/视图中重用相同的组件.您需要将bean放在请求范围内,或者完全摆脱组件绑定.
请注意,将组件直接绑定到bean通常是代码中某处设计不佳的标志.是什么,您认为这是解决方案的功能要求和/或问题?如果你详细说明,我们可能会提出正确的方法.
另请注意,单独使用动作侦听器也是一种设计气味.我希望"searchForLicenses"是一种正常的动作方法.另请参见action和actionListener之间的差异.
| 归档时间: |
|
| 查看次数: |
5122 次 |
| 最近记录: |