2017-05-03 7 views
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> 

私はselectBooleanCheckboxconverterを使用できないことを読みました。チェックボックスをクリックすると、TodoItem.statuscompletedまたは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で:

+0

「変換」を行う「セッター」を追加してみませんか?汚いと感じるかもしれませんが、簡単な回避策なので、私はあまり気にしません – Kukeltje

+0

値のバインディングは2通りの方法で動作しないと思います。だからゲットはうまくいかないでしょう – Subash

+0

はい、そこにゲッターが必要で、そこに「逆の」変換をする必要があります。 – Kukeltje

答えて

1

はなぜ二つの追加のメソッドを追加しない

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

しかし、私はあなたが 'トライ状態' のステータスを持って気づくありません。それは問題を引き起こさないでしょうか?

関連する問題