假设我有两个selectOneMenu下拉列表:
下拉A:
<h:selectOneMenu value="valA"
immediate="false"
required="true"
valueChangeListener="#{JavaClass.someJavaMethod}"
id="caImplClassSelector"
rendered="#{JavaClass.someOtherMethod}">
下拉B:
<h:selectOneMenu value="valB"
immediate="false"
required="true"
valueChangeListener="#{JavaClass.someJavaMethod}"
id="caImplClassSelector"
disabled="what should I write here?"
rendered="#{JavaClass.someOtherMethod}">
如果用户在下拉列表A中选择一个值,我怎样才能确保下拉列表B被禁用?我可以在JavaClass中创建一个返回true或false的方法,具体取决于是否已经选择了下拉列表A中的值,但有没有办法在不使用该方法的情况下执行上述操作?
任何帮助都将不胜感激。
答案 0 :(得分:2)
我不知道你使用的是什么JSF / RF版本,所以这里只是一个通用的答案。
将第一个下拉列表的值绑定到bean属性:
<h:selectOneMenu value="#{bean.firstMenu}">
然后让第二个下拉列表的disabled
属性拦截:
<h:selectOneMenu disabled="#{bean.firstMenu == null}">
请注意,使用JSF2 / RF4,您不需要在旧的无Ajax JSF 1.x版本中使用的valueChangeListener
/ immediate
hacks。
答案 1 :(得分:1)
在托管bean中声明一个布尔属性,并为其生成getter和setter方法。
默认情况下将其设置为true。
在<h:selectOneMenu value="valA"
immediate="false"
required="true"
valueChangeListener="#{JavaClass.someJavaMethod}"
id="caImplClassSelector"
rendered="#{JavaClass.someOtherMethod}">
在第一个基于值更改侦听器的应用程序逻辑的下拉列表中,将disabled属性设置为false。
在第二个下拉菜单中,请参阅已禁用的属性。
您可能需要处理一些额外的逻辑。