この質問で説明されているように、バッキング Bean 側のフォームでいくつかのフィールド検証を実行しようとしています。このために、違反しているフィールドにアクセスしてマークを付けたいと思います。Web を検索すると、これを行うには 2 つの方法があるようです。
- コンポーネントをアクセス用にバッキング Bean に格納し、
binding
属性を介して JSF ページで使用します。 - JSF ページで標準の値バインディングを使用し、Bean からコンポーネントにアクセスする必要がある場合は、
UIViewRoot.findComponent(String id)
私が見る限り、どちらの方法にも欠点があります。コンポーネント バインディングはバッキング Bean を変数とゲッター/セッターで爆破します。一部のサイトでは、コンポーネント バインディングの使用をまったく推奨していません。いずれにせよ、リクエストスコープが推奨されます。一方、 findComponent() は常にツリーをトラバースしますが、コストがかかる場合とそうでない場合がありますよね? (さらに、現時点ではコンポーネントがまったく見つかりませんが、それは別の問題です)
どちらに行くべきですか?これらは交換可能な代替案ですか?そうでない場合は、どのような基準に基づいて選択しますか? 現在、適切な決定を下すのに十分な洞察力がありません...