8

複数ページにまたがるデータがある場合(参考例) 単一のマネージドBeanにロードでき、同じページ内で複数のマネージドBeanを使用しているということです。その影響は何ですか?

4

1 に答える 1

17

同じ xhtml ページで複数のマネージド Bean を使用できますか?

はい、できます。試してみることを強くお勧めします:)。

その影響は何ですか?

これはマネージド Bean のスコープに依存します。良い例は、新しい配送先住所を追加する Amazon サイトと同様に、新しい住所を登録するためのビューを持ち、ログに記録されたユーザー情報をページの上部に表示することです。

この場合、次の 3 つのマネージド Bean を使用できます。

  • ログに記録されたユーザー情報を表示する@SessionScopedBean。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 に答える