我有一个单选按钮列表,并且想根据支持 bean 方法的结果禁用某些项目。
<h:selectOneRadio value="#{managedBean.selectedItem}">
<f:selectItems value="#{managedBean.selectItems}"
var="x"
itemDisabled="#{managedBean.checkIncompatible(x)}" />
</h:selectOneRadio>
这是正确的做法吗?意思是,这段代码会调用checkIncompatible(x)
对于每个x
来自selectItems
列出该项目并将其设置为启用/禁用或仅一次,就这样?
我只设法启用或禁用所有按钮,我怀疑该方法只被调用一次。或者我的其余代码并不像我想象的那么完美。这需要更长的时间才能解决。
我无法使用以下视图在 Mojarra 2.1.4 上重现您的问题:
<h:selectOneRadio value="#{bean.item}">
<f:selectItems value="#{bean.items}" var="item"
itemDisabled="#{bean.isDisabled(item)}" />
</h:selectOneRadio>
以及以下 bean:
private String[] items = { "one", "two", "three" }; // +getter
private String item; // +getter+setter
public boolean isDisabled(String item) {
return "two".equals(item);
}
上面的例子正确地禁用了项目two
.
所以,你的问题是在其他地方引起的,可能是由于checkUncompatible()
方法。该方法上的断点告诉我,每个项目都肯定会调用它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)