0
ウェブページに印刷したいアイテムのリストがあります。リストの各項目について、チェックボックスを表示したい。チェックボックスをクリックすると、項目のステータスをトグルする必要があります。jsf booleanチェックボックス(ui-repeat付き)
TodoItem
は、私が更新したいプロパティStatus
を持っています。
ステータス
public enum Status {
Active,
Completed,
Archived
}
JSFページ
<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>
私はselectBooleanCheckbox
でconverter
を使用できないことを読みました。チェックボックスをクリックすると、TodoItem.status
をcompleted
またはactive
のいずれかに更新したいとします。
バッキングビーンに別のリストを追加することなくこれを達成するにはどうすればよいですか?
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で:
「変換」を行う「セッター」を追加してみませんか?汚いと感じるかもしれませんが、簡単な回避策なので、私はあまり気にしません – Kukeltje
値のバインディングは2通りの方法で動作しないと思います。だからゲットはうまくいかないでしょう – Subash
はい、そこにゲッターが必要で、そこに「逆の」変換をする必要があります。 – Kukeltje