0

私はJSF2.0を使用しており、そのデータテーブルに1つのdataTableを作成しています。マネージドBeanから値を取得しています。また、ポストコンストラクトのマネージドBeanで、別のファイルからWebサービスを呼び出しています。

以下はそのためのコードです

<h:dataTable
                    value="#{bean1.getList}" var="c" styleClass="order-table"
                    headerClass="order-table-header" width="100%" 
                    rowClasses="order-table-odd-row,order-table-even-row" rows="8"
                    columnClasses="first,second">

                    <h:column>
                        <f:facet name="header">
                            <h:selectBooleanCheckbox></h:selectBooleanCheckbox>
                        </f:facet>
                             <h:selectBooleanCheckbox value="#{c.id}"></h:selectBooleanCheckbox>

                    </h:column>

                    <h:column>
                        <!-- <f:facet name="header"/> -->
                        <h:outputLabel value="From: "></h:outputLabel>
                        <h:outputLabel value="#{c.from}"></h:outputLabel>
                        <br></br>
                        <!-- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -->
                        <h:outputLabel value="Sub: "></h:outputLabel>
                        <h:outputLabel  value="#{c.sub}"/>
                        <h:commandLink immediate="true" action="#{bean2.doRead}" value="Read" id="Read"></h:commandLink> 
                    </h:column>


                    <!-- Footer Setting -->
                    <f:facet name="footer">

                    </f:facet>
                </h:dataTable>

私のBean1クラス

@PostConstruct
public void prepareList(){
{
        web service call

}

public List<InboxBean> getemailList(){
    return list;
}

その時点で ID 読み取りを持つ commandlink をクリックすると、bean1 ポスト コンストラクトのタグ付きプロパティも呼び出されます。私が実行したくないこと。それで、この問題から抜け出す方法と、bean2 setProperty でサブジェクト値を設定したいです。前もって感謝します

4

1 に答える 1

3

これは、Bean がリクエスト スコープに配置されている場合に発生する可能性があります。HTTP リクエストごとに Bean が再構築されます。代わりに、Bean をビューまたはセッション スコープに配置します。

たとえば、ビュー スコープでは次のようになります。

@ManagedBean
@ViewScoped
public class Bean {}

nullビュー スコープ Bean は、アクション メソッドを返すかvoid、アクション メソッドで同じビューを操作している限り存続します。

またはセッションスコープで:

@ManagedBean
@SessionScoped
public class Bean {}

セッション スコープの Bean は、確立されたブラウザ セッションの間存続します。つまり、Bean に関係する最初の HTTP 要求から、クライアントがブラウザー インスタンス全体を閉じるまで、またはサーバー側でセッションが期限切れになるまで (デフォルトでは 30 分) です。

特定のケースでは、ビュー スコープ Bean が最適な選択である可能性が高くなります。

以下も参照してください。

于 2012-04-25T05:07:58.003 に答える