2011-11-23 22 views
3

我有一個單選按鈕列表,並希望根據支持bean方法的結果禁用某些項目。對於列表中的每個項目,從backing bean方法中設置itemDisable

<h:selectOneRadio value="#{managedBean.selectedItem}"> 
    <f:selectItems value="#{managedBean.selectItems}" 
        var="x" 
        itemDisabled="#{managedBean.checkIncompatible(x)}" /> 
</h:selectOneRadio> 

這是正確的方法嗎?意思是,這段代碼是否會從selectItems列表中爲每個x調用checkIncompatible(x),並將該項設置爲啓用/禁用或僅一次,那就是這樣?

我只設法讓所有的按鈕被啓用或禁用,我懷疑該方法只被調用一次。或者我的其他代碼不像我想要的那樣完美。這需要一個更長的問題來解決。

回答

1

我不能與下面的視圖上鑽嘴魚科2.1.4重現您的問題:

<h:selectOneRadio value="#{bean.item}"> 
    <f:selectItems value="#{bean.items}" var="item" 
     itemDisabled="#{bean.isDisabled(item)}" /> 
</h:selectOneRadio> 

及以下豆:

private String[] items = { "one", "two", "three" }; // +getter 
private String item; // +getter+setter 

public boolean isDisabled(String item) { 
    return "two".equals(item); 
} 

上面的例子正確禁用項目two

所以,你的問題是在其他地方引起的,也許是由於checkUncompatible()方法中的一個bug。該方法的斷點告訴我,每個項目都明確要求它。

+0

感謝您的努力 – glasspill

+0

您的問題解決了嗎?原因是什麼? – BalusC

+0

該方法中的錯誤。發佈前我曾檢查過哪些內容。兩次:| – glasspill

相關問題