假设我有两个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中的值,但在创建该方法后,有什么方法可以做到这一点吗?
如有任何帮助,我们将不胜感激。
我不知道您使用的是什么JSF/RF版本,所以这里只是一个通用的答案。
将第一个下拉列表的值绑定到bean属性:
<h:selectOneMenu value="#{bean.firstMenu}">
然后让第二个下拉列表的disabled
属性截取:
<h:selectOneMenu disabled="#{bean.firstMenu == null}">
请注意,使用JSF2/RF4,您不需要valueChangeListener
/immediate
技巧,这些技巧在旧的无ajaxless JSF1.x版本中使用过。
在托管bean中声明一个布尔属性,并为其生成getter和setter方法。
默认情况下,将其设置为true。
在<h:selectOneMenu value="valA"
immediate="false"
中
required="true"
valueChangeListener="#{JavaClass.someJavaMethod}"
id="caImplClassSelector"
rendered="#{JavaClass.someOtherMethod}">
在第一个基于应用程序逻辑的下拉列表中,值更改侦听器将disabled属性设置为false。
在第二个下拉列表中,请参阅禁用的属性。
您可能需要处理一些额外的逻辑。