带有ui-repeat的jsf布尔复选框

时间:2017-05-03 11:18:57

标签: jsf jsf-2.2

我有一个项目列表,我想在网页上打印。对于列表中的每个项目,我想显示一个复选框。单击复选框时,应切换项目的状态。

TodoItem有一个我要更新的属性Status

状态

public enum Status {
    Active,
    Completed,
    Archived
}

Jsf Page

<ui:repeat value="#{todoBean.selectedList.todoItems}" var="todoItem">
    <h:form id="todoItemStatus">
        <h:selectBooleanCheckbox class="filled-in" id="todo-item" value="#{todoItem.status}">
            <f:ajax listener="#{todoBean.toogleTodoItemStatus(todoItem)}" />
        </h:selectBooleanCheckbox>

        <h:outputLabel for="todo-item" value="#{todoItem.title}" />
    </h:form>
</ui:repeat>

我读过我converter无法使用selectBooleanCheckbox。单击复选框后,我想将TodoItem.status更新为completedactive

如何在不在辅助bean中添加其他列表的情况下实现此目的?

1 个答案:

答案 0 :(得分:1)

为什么不添加另外两种方法:

public Boolean getBooleanStatus() {
    return status == Status.ACTIVE ? true : false; // But then what you really want
} 

public void setBooleanStatus(Boolean boolStatus) { 
    this.status = boolStatus == true ? Status.ACTIVE : Status.COMPLETED; // But then what you really want
}

在xhtml中:

<h:selectBooleanCheckbox class="filled-in" id="todo-item" value="#{todoItem.boolenStatus}">

但我确实注意到你有一个'三态'&#39;状态。这不会导致问题吗?