我有以下按钮:
<h:commandButton
disabled="#{mybean.searching}"
binding="#{mybean.searchButton}"
actionListener="#{mybean.searchForLicenses}"
value="Search" />
当我调试时,我看到 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;
}
如果您将组件绑定到会话或应用程序范围的 bean 而不是请求范围的 bean,则可能会发生这种情况。这简直就是一个糟糕的设计。相同的组件将在多个请求/视图之间重用。您需要将 bean 放入请求范围内,或者完全摆脱组件绑定。
请注意,将组件直接绑定到 bean 通常是代码中某处设计不佳的标志。您认为这是解决方案的功能需求和/或问题是什么?如果您详细说明这一点,我们也许能够提出正确的方法。
另请注意,单独使用动作侦听器也是一种设计味道。我希望“searchForLicenses”是一种正常的操作方法。也可以看看动作和动作监听器之间的区别.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)