2011-05-31 53 views
1

比方说,我有两个selectOneMenu用于下拉式选单:JSF:在一个下拉选择值下降使另一个下拉

下拉列表:

<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

JSF 1.x or 2.x? RichFaces 3.x或4.x? – BalusC 2011-05-31 19:03:08

回答

2

我不知道你使用的是什么JSF/RF版本,所以这里只是一个通用的答案。

绑定第一下拉到一个bean属性的值:

<h:selectOneMenu value="#{bean.firstMenu}"> 

然后让第二个下拉拦截的disabled属性上:

<h:selectOneMenu disabled="#{bean.firstMenu == null}"> 

注意与JSF2/RF4你不需要在旧版ajaxless JSF 1.x版本中使用的黑客攻击手段valueChangeListener/immediate

1

在托管bean中声明布尔属性并为其生成getter和setter方法。

默认设置为true。

<h:selectOneMenu value="valA" immediate="false"
required="true"
valueChangeListener="#{JavaClass.someJavaMethod}"
id="caImplClassSelector"
rendered="#{JavaClass.someOtherMethod}">

在第一下拉基于关于值变化监听应用逻辑设置禁用属性设置为false。

在第二个下拉菜单中指向禁用的属性。

可能有一些额外的逻辑,你可能需要处理。

相关问题