2011-05-31 69 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。

在第二個下拉菜單中指向禁用的屬性。

可能有一些額外的邏輯,你可能需要處理。

相關問題