したがって、これが jsf コンポーネントです。
<h:selectBooleanCheckbox id="cb#{index}" value="#{backingBean.value}" />
そして、ここにバッキング Bean Java の一部があります。
/**
* getValue is a method which checks if a checkbox is selected or not, using the checkbox ID
*/
public boolean getValue() {
//TODO: get the checkbox id
String checkboxID = ??
if (getCheckedIDs().contains(checkboxID)) {
return true;
}
return false;
}
ページがチェックボックスをロードしているときに、チェックボックスが選択されているかどうかをこの方法で確認したい。問題は、??の代わりに何を書くかです。メソッドを呼び出したチェックボックスの ID を取得するには? JSF 1.1 のみを使用できることが非常に重要であるため、このバージョンでは機能しないソリューションが多数あります。
もう 1 つの非常に重要なことは、次のようにバッキング Bean でセッター/ゲッターを使用できないことです: https://stackoverflow.com/a/48006066/9158590。 、送信後だけではありません。チェックの直後にバッキング Bean への格納を解決済みです。ページをロードするときに true または false を返すだけで済みます。
これは、ページ ナビゲーションを使用しているためです。たとえば、ページ 1 のボックスにチェックを入れ、別のページに移動してから戻ると、ボックスはもう選択されていません (バッキング Bean のみ)。