使用primefaces动态启用/禁用jsf中的复选框

时间:2012-05-25 22:31:31

标签: jsf dynamic checkbox primefaces

我有一个数据表,其中包含来自数据库的动态生成数据。用户可以选择/取消选择行,但只能选择那些未设置为必须从数据库中选择的行。

我的豆

        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:

  

< p:selectBooleanCheckbox value =“#{myBean.checked}”disabled =“#{myBean.disabled}”/>

目前无法正常工作。选中所有复选框。在编译时我不知道哪个复选框将启用,这就是我禁用该方法的原因。

如果有人有解决方案如何动态设置禁用,我会很高兴。

1 个答案:

答案 0 :(得分: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>

这样,每一行都有自己的检查和禁用数据值。