0

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

我的豆子

        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 }"/>

目前没有像我想要的那样工作。选中所有复选框。在编译时,我不知道将启用哪个复选框,这就是我禁用该方法的原因。

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

4

1 回答 1

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>

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

于 2012-05-26T05:02:01.727 回答