2012-05-25 46 views
0

我有一個可從數據庫動態生成數據的數據表。用戶可以選擇/取消選擇行,但只能選擇那些未設置爲必須從數據庫中選擇的行。在jsf中使用primefaces動態啓用/ diable複選框

我的豆

 public boolean isDisabled() { 
    if (evState == EvaluationState.MUST_EVALUATE) { 
     return true; 
    } else { 
     return false; 
    } 
} 

public boolean isChecked() { 
    if (evState == EvaluationState.EVALUATE 
      || evState == EvaluationState.MUST_EVALUATE) { 
     return true; 
    } else { 
     return false; 

    } 
} 

和我xhtmlCode:

<號碼:selectBooleanCheckbox值= 「#{} myBean.checked」 禁用=「#{} myBean.disabled 「/>

這是目前不工作就像我想我噸。所有複選框都被選中。在編譯時,我不知道哪個複選框會啓用或不啓用,這就是爲什麼我禁用了該方法。

如果有人有解決方案如何動態設置禁用,我會很高興。

回答

1

您的模型應該包含2個屬性來處理這些操作,而不是您的控制器。

//defining the model 
public class Data { 
    private String name; 
    //you get the idea... 
    private boolean checked; 
    private boolean disabled; 
    //getters and setters... 
} 

//defining the controller 
@ViewScope 
public class MyBean { 
    private List<Data> lstData; 

    public MyBean() { 
     //initialize data... 
    } 

    //getter and setter 
} 

在這樣的觀點

<h:dataTable value="#{myBean.lstData}" var="data"> 
    <h:column> 
     <h:outputText value="#{data.name}" /> 
    </h:column> 
    <h:column> 
     <p:selectBooleanCheckbox value="#{data.checked}" disabled = "#{data.disabled }"/> 
    </h:column> 
</h>dataTable> 

,每一行都有自己的檢查和無效的數據值。