2011-11-21 22 views
0

オブジェクトから構成されたブール値+ブール値をビューに渡しています。各オブジェクトのブール値を表示したいと考えています。JSFチェックボックスの値を表示するnogを繰り返します。

<ui:repeat var="item" value="#{userTypeController.permissionItems}"> 
        <h:outputText value="#{item}" /> 
        <h:selectBooleanCheckbox value="#{userTypeController.checkMap[item]}"/> 
    </ui:repeat> 

そして、HashMapの方法:

は、しかし、チェックボックス自体がチェックされることはありません

public Map<Permission, Boolean> getCheckMap() { 
    checkMap = null; 
    for (Permission p : getPermissionItems()) { 
     if (getPermissionItemsUserType().contains(p)) 
      checkMap.put(p, Boolean.TRUE); 
     else 
      checkMap.put(p, Boolean.FALSE); 
     System.out.println(checkMap.get(p).toString()); 
    } 
    return checkMap; 
} 

これは動作するはずとのSystem.out.println時に、私は真の出力を参照してください... ..すべてのID私がここで間違っていることは何ですか?

答えて

0

あなたが記述する症状は、2.1.1で偶然一致していたMojarra bug 1807と一致し、2.1.4で正式に修正されました。したがって、upgrading Mojarraを少なくとも2.1.1にする必要があります。

コードに大きなバグがあることにご注意ください。あなたはcheckmapをインスタンス化していませんが、これはNullPointerExceptionを投げますが、これは質問のコードを単純化しているようです。また、ゲッターの中でこれを行うことは悪い考えです。これは、(ポスト)構造体またはイベントリスナーメソッド中に行う必要があります。ゲッターは、レンダーレスポンス中に複数回呼び出すことができます。 Why JSF calls getters multiple timesも参照してください。

+0

2.1.4にアップグレードしても、同じ問題があります。他に何か試すことができますか? – SnIpY

+0

さて、ゲッターのロジックをやってはいけませんが、(ポスト)コンストラクターや、レンダーレスポンスフェーズの前に一度だけ呼び出されるメソッドではロジックを実行しないでください。それ以外の場合は、バグが含まれているため、有効なSSCCEが役立ちます。 – BalusC

関連する問題