このXHTMLコードに相当するものを見つけようとしています:
<h:selectBooleanCheckbox value="#{sandboxBean.selected}" >
<f:ajax listener="#{sandboxBean.handleToggle}" render="outputText" />
</h:selectBooleanCheckbox>
<br /><br />
<h:outputText value="#{sandboxBean.selected}" id="outputText"/>
バッキング Bean によってチェックボックス全体を動的に作成する必要がある場合。このコードで Ajax の良さを得ることができました。
checkbox = new HtmlSelectBooleanCheckbox();
checkbox.setId(makeCheckboxId());
AjaxBehavior valueChangeAction = (AjaxBehavior)FacesContext.getCurrentInstance().getApplication().createBehavior(AjaxBehavior.BEHAVIOR_ID);
valueChangeAction.addAjaxBehaviorListener(new AjaxBehaviorListener() {
@Override
public void processAjaxBehavior(AjaxBehaviorEvent event) throws AbortProcessingException {
System.out.println("Ajax behavior called");
}
});
checkbox.addClientBehavior("valueChange", valueChangeAction);
しかし、メソッドを実行するための Ajax 呼び出しを取得する方法も、レンダリングしたい要素handleToggle
に簡単にアクセスする方法もわかりません(この簡略化された例)。outputText
また、これは予想外に複雑に思えます。これはすべて、不明な数の列を持つテーブルが必要であることが原因です。テーブル全体をコードで作成することで、根本的に間違った角度からこれにアプローチしているだけでしょうか?