8

私はいくつかの読書と演奏をしましたが、誰かが答えてくれることを望んでいたいくつかの質問がまだあります:

では、1つのJSFページで2つ以上のバッキングBeanを使用できますか?

<h:intputText value="#{myFirstBean.firstProperty}" />
<h:intputText value="#{mySecondBean.secondProperty}" />

できれば、なぜ私はそれをすべきではないのですか?(誰もそうしないので、私はすべきではないと思います)

できないのなら、なぜですか?

また、「ページの読み込み時にフレームワークがバッキングBeanをインスタンス化し、ポストバックの場合はデータを入力する」などの記事を読みました。彼らはバッキングBeanを言いますが、フレームワークがどのバッキングBeanをインスタンス化するかをどのように知っているのか理解できません。

4

3 に答える 3

5

いくつかの用語を明確にしましょう:

  • 管理対象Beanは、管理対象Bean機能を使用して構成できるJavaBeansコンポーネントです。を参照してください。
  • バッキングBeanは、特定のページで使用されるUIコンポーネントに関連付けられているJavaServerFacesマネージドBeanです。を参照してください。

したがって、1つのJSFページで2つ以上のマネージドBeanを使用できますが、1つのページに関連するUIコンポーネントのバインディング、リスナー、ロジックなどを2つ以上のバッキングBeanに分割することは可能ですが、非常に望ましくないため、多くの問題と悪いコード。

于 2009-12-10T20:14:29.950 に答える
4

なぜだめですか?それは完全に合法的なことです。通常、ページは(構造を良くするために)1つのBeanに関連付ける必要がありますが、たとえば、各ページに現在の時刻を表示したい場合はtimeBean.currentTime、特に、を自由に参照できます(もちろん、ここでは、インクルード/テンプレートを使用することをお勧めします)。

于 2009-12-10T20:08:48.587 に答える
2

他の質問はすでに回答されています。でも:

また、「ページの読み込み時にフレームワークがバッキングBeanをインスタンス化し、ポストバックの場合はデータを入力する」などの記事を読みました。彼らはバッキングBeanを言いますが、フレームワークがどのバッキングBeanをインスタンス化するかをどのように知っているのか理解できません。

Beanはその名前で解決されます。たとえば、#{myFirstBean.firstProperty}「myFirstBean」(クラスのインスタンスMyFirstBean)という名前のBeanを探します。次のように名前を調整できます。

@ManagedBean(name = "foo")
public class SomeClass { ... }

次に、を介してそれを参照できます#{foo.firstProperty}

于 2010-08-18T11:41:26.990 に答える