0

簡単に言うと、メニューの値を変更すると、バッキングBeanでポストコンストラクターが再度実行され、メソッドfillAreasが実行され、ビュースコープが使用された場合の問題があります。

<p:selectOneMenu id="governate" value="#{add.selectedGovern}"  style="height:26px; text-align: right; width: 303px;"
                                                     valueChangeListener="#{add.fillAreas}" rendered="#{languageBean.isDefaultLanguage==true}" immediate="true" >  
                                        <f:selectItem itemLabel="---#{prompts._select} ---" itemValue="0"/>
                                        <f:selectItems value="#{add.governrateList}" var="govern" itemLabel="#{govern.governrateName}" itemValue="#{govern.governrateId}" />  
                                        <f:ajax  immediate="true"/>

                                    </p:selectOneMenu>

ポストコンストラクターの呼び出しを防ぐために何ができますか?ポストコンストラクターが一度呼び出された場合、メニューから選択するたびに呼び出されるのはなぜですか?前もって感謝します 。

4

1 に答える 1

1

<c:forEach>ビュースコープのBeanは、そのプロパティがタグハンドラーの属性(JSTL 、Facelets <ui:include>、JSF<f:validateXXX>など)またはJSF UIコンポーネントのbindingor属性(など)にバインドされている場合、すべてのリクエストで再作成されます。id<h:someComponent>

これは、JSF問題1492に関連しています。特定のビューの部分的な状態保存を無効にするか、目的の機能要件を達成するための代替方法を探すことで、これを解決できます。

参照:

于 2012-10-03T18:15:13.203 に答える