我有一个数据表,其中包含来自数据库的动态生成数据。用户可以选择/取消选择行,但只能选择那些未设置为必须从数据库中选择的行。
我的豆
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}”/>
目前无法正常工作。选中所有复选框。在编译时我不知道哪个复选框将启用,这就是我禁用该方法的原因。
如果有人有解决方案如何动态设置禁用,我会很高兴。
答案 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>
这样,每一行都有自己的检查和禁用数据值。