在加载时使用禁用复选框的Primefaces SelectManyCheckbox表现不同

时间:2018-04-02 10:52:56

标签: primefaces jsf-2.2 selectmanycheckbox

我发现p:selectManyCheckbox有些奇怪的行为。在页面加载时,选中两个复选框值,并且有条件地禁用其中一个复选框。如果我取消选中复选框(未禁用),则也会取消选中已禁用的复选框。

如果我尝试调试代码,则使用空数组更新setter。

这仅适用于已禁用的复选框。我使用的是Primefaces 5.2和JSF 2.2版本。

XHTML

<h:form id="mulitpleCheckboxTest">
 <p:selectManyCheckbox id="multicheckBoxTest" 
    value="#{indexManagedBean.selectedCheckBox}" layout="grid" columns="1">
    <f:selectItems value="#{indexManagedBean.checkBoxValues}" 
    var="number" itemValue="#{number}" itemDisabled="#{'four' eq number}" />
    <p:ajax update="@form"></p:ajax>
</p:selectManyCheckbox>

Managed Bean:

@ManagedBean
@ViewScoped
public class IndexManagedBean {

    private List<String> checkBoxValues;

    private List<String> selectedCheckBox;

    @PostConstruct
    public void init() {
        selectedCheckBox = new ArrayList<String>();
        checkBoxValues = new ArrayList<String>();
        popoulateCheckBoxValues();
        selectedCheckBox.add("four");
        selectedCheckBox.add("Two");

    }

    public List<String> getCheckBoxValues() {
        return checkBoxValues;
    }

    public void setCheckBoxValues(List<String> checkBoxValues) {
        this.checkBoxValues = checkBoxValues;
    }

    public List<String> getSelectedCheckBox() {
        return selectedCheckBox;
    }

    public void setSelectedCheckBox(List<String> selectedCheckBox) {
        this.selectedCheckBox = selectedCheckBox;
    }

    private void popoulateCheckBoxValues() {
        checkBoxValues.add("One");
        checkBoxValues.add("Two");
        checkBoxValues.add("Three");
        checkBoxValues.add("four");
        checkBoxValues.add("five");
        checkBoxValues.add("six");
        checkBoxValues.add("seven");
        checkBoxValues.add("eight");
        checkBoxValues.add("nine");
        checkBoxValues.add("ten");
   }
}

0 个答案:

没有答案