複数ページにまたがるデータがある場合(参考例) 単一のマネージドBeanにロードでき、同じページ内で複数のマネージドBeanを使用しているということです。その影響は何ですか?
user2354035
質問する
8752 次
1 に答える
17
同じ xhtml ページで複数のマネージド Bean を使用できますか?
はい、できます。試してみることを強くお勧めします:)。
その影響は何ですか?
これはマネージド Bean のスコープに依存します。良い例は、新しい配送先住所を追加する Amazon サイトと同様に、新しい住所を登録するためのビューを持ち、ログに記録されたユーザー情報をページの上部に表示することです。
この場合、次の 3 つのマネージド Bean を使用できます。
- ログに記録されたユーザー情報を表示する
@SessionScoped
Bean。amazon ビューの場合は、名前のみが表示されます。 @ApplicationScoped
国のデータを提供する Bean 。この情報はあまり頻繁には変更されません (少なくとも、新しい国は毎日生まれます =\)。@ViewScoped
リクエスト データ、エラー メッセージ、および登録を処理する Bean 。
Facelets コードでの上記の説明のサンプル:
<div id="top">
Hello #{sessionBean.user.firstName}
</div>
<div id="body">
<h1>Add an address</h1>
<h:form id="frmAddress">
<h:panelGrid columns="2">
<h:outputText value="Address" />
<h:inputText id="txtAddress" value="#{viewBean.address}" />
<h:outputText value="Country" />
<h:selectOneMenu id="ddlCountry" value="#{viewBean.selectedCountry}">
<f:selectItems value="#{applicationBean.countries}" var="country"
itemLabel="#{country.name}" itemValue="#{country}" />
</h:selectOneMenu>
</h:panelGrid>
<h:messages id="msgErrors" />
<h:commandButton value="Save address" action="#{viewBean.saveAddress}" />
</h:form>
</div>
注: これは良い方法でも悪い方法でもありません。これがどのように動作するかを試してみてください。影響は、各マネージド Bean がページ内でどのように動作するかが定義されるため、Bean をどのように定義したかに基づいて、非常に適切または非常に悪いエクスペリエンスになります。
関連情報:
于 2013-09-20T14:58:46.297 に答える