JSF:在一个下拉列表中选择值将启用另一个下拉菜单



假设我有两个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。

在第二个下拉列表中,请参阅禁用的属性。

您可能需要处理一些额外的逻辑。

相关内容

  • 没有找到相关文章

最新更新