我有一个项目列表,我想在网页上打印。对于列表中的每个项目,我想显示一个复选框。单击复选框时,应切换项目的状态。
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
更新为completed
或active
。
如何在不在辅助bean中添加其他列表的情况下实现此目的?
答案 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;状态。这不会导致问题吗?