JSF、Managed Beans、および EL 2.2 では、次の形式の式を一般的に知っています。
#{bean.value}
次のように、マネージド Bean クラスの対応する関数セットにマップされます。
@ManagedBean
class Bean {
private String value;
public String getValue() { return value; }
public void setValue( String s ) { value = s; }
}
マップのプロパティを取得および設定することもできます。
#{bean.value['key']}
次のようなものに支えられています:
@ManagedBean
class Bean {
private Map<String, Boolean> kvMap;
public boolean getValue( String key ) { return kvMap.get( key ); }
public void setValue( String key, boolean value ) { kvMap.put( key, value ); }
}
ここまでは順調ですね。
JSF に多くの時間を費やすにつれて、再利用可能なコードのチャンクを作成しようとしていることがわかりました。<ui:composition>
具体的には、.xhtmlを介して含めることができるブロック内の xhtml の小さなブロックです<ui:include>
。さらに、私にとってより便利なものの多くは、入れ子になったチェックボックスのセットのようなもので (UI デザイナーはそれらに夢中です ;-)、<ui:repeat>
非常に便利です。
<ui:repeat>
常に、不敬な量のタイピングを使用せずに使用するために、の属性のようなものを介して、またはインラインで<ui:include>
作成されたエイリアスを使用してきました。<ui:param>
var
<ui:repeat>
ネストされた UIComponents、特にマップ内のマップから値を取得するものをどんどん書いているため、フォームを送信するときに JSF が探す正しいセッター メソッドのシグネチャを推測するのがますます難しくなっていることがわかりました (一部の場合)。 getter を書く方が自然なように思われる理由)。
あなたの達人への私の質問は次のとおりです。
セッター署名がどのように見えるかをJSFに教えてもらう方法はありますか? JSF は通常、(読み取り専用プロパティであると考えて) getter のみに解決される式について不平を言うことはないので、私はフィードバックの欠如に苛立たしく感じます。最後にその魔法を正しく当ててください。
実行時に FacesContext... クエリを実行したり、深くネストされたプロパティの正しいセッター署名を示すクラスファイルのようなコンパイル済みの中間ファイルを調べたりするなど、何らかの手法があることを願っています。そのようなものがあれば、試行錯誤してセッターを構築する方法を見つけようとする時間を大幅に節約できると思います。
うまくいけば、私が求めていることを十分に明確に表現できていることを願っています。返信に感謝します。