パラメータを使用して一部のプロパティにアクセスしようとすると、いくつかの問題が発生します。アクセサーにはパラメーターがあるため、プロパティと呼ぶべきかどうかはわかりませんが、とりあえずプロパティと呼びましょう。
状況は次のとおりです。
マップ内のオブジェクトとしてさまざまなローカリゼーションを含む Student クラスがあります。これを行うことで、これらのローカリゼーション オブジェクトを取得できます。
student.getLocalizedData(String localizationCode);
今、ページで、私はこれをやろうとしています:
<h:inputText value="#{collegeBean.student.getLocalizedData('es').profileDescription}"/>
学生の説明には、多くのローカリゼーションを含めることができます。
ページは正しく読み込まれますが、学生を保存しようとすると、Bean の collegeBean にプロパティ getLocalizedData がなく、Bean に含まれる学生のプロパティであることがわかります。
私はその行が非常識であることを知っているので、それをラップしようとしました:
<h:inputText value="#{collegeBean.getStudentLocalizedData('es').profileDescription}"/>
悲しいかな、もう一度同じメッセージが表示されます。
私が見つけた唯一の解決策は、studen't sproperty を完全にラップするメソッドを作成することです...しかし、ローカリゼーションごとに 2 つのメソッド (get + set) が残り、それは 1 つのプロパティのみです。これは、(2 x ローカライゼーション x 属性) の量のメソッドを持つことをやめるということです!.
これを最も動的な方法で解決するために私が取ることができるアプローチはありますか? ローカリゼーションの量は将来変更される可能性があり、コードを変更したくありません。
編集: JBoss 6.1.0.Final とそれに付属する JSF 実装 JSF 2.0.3-b05 を使用しています