0

method-signature 属性を持つコンポメントがあります。アクティブ化できますが、 に入れて<h:datatable> <h:column/>このコンポーネントをトリガーすると機能しません。

このページをもう一度更新するか、別の場所に置くと、正常に呼び出されます。誰か理由教えてくれたら嬉しいです!

これは私のコードです

<h:column>
                    <f:facet name="header">op:</f:facet>
                    <h:commandLink value="alter" action="#{userSession.alterAction}"
                        rendered="#{userSession.user.power.powerID == 1}">
                        <f:param name="beanId" value="#{book.bookID}" />
                        <f:param name="class" value="#{BookBean}" />
                    </h:commandLink>
                    <h:commandLink action="#{userSession.detailAction}" value="detail"
                                   rendered="#{userSession.user != null}">
                        <f:param name="beanId" value="#{book.bookID}" />
                        <f:param name="class" value="#{BookBean}" />
                    </h:commandLink>
                    <h:commandLink action="#{bookAction.bookDelAction}"
                        onclick="return confirm('are you sure?')" value="delete"
                        rendered="#{userSession.user.power.powerID == 1}">
                        <f:param name="beanId" value="#{book.bookID}" />
                    </h:commandLink>
                </h:column>

このmanagedBean #{bookAction}は、削除のように、この操作の1つをクリックするとrequestScopeになり、まったく機能しません。しかし、「削除」コマンドリンクを . の外に置くと、<h:datatabel/> バッキング メソッドを正常に呼び出すことができます。それはとても怒っています!

これらのコードを.it<h:datatable/>に入れれば、見つかった .i をシールドできるかどうか誰が教えてくれますか? <h:form/>理由を教えてください!

4

1 に答える 1

1

フォーム送信のリクエスト中は、最初のフォームを表示するリクエスト中とまったく同じデータ モデル (つまり、 のvalue属性によって参照されたもの) を保持する必要があります。<h:dataTable>この症状は、リクエスト スコープの Bean を使用していること、およびデータ モデルのロードが、フォームの送信中に欠落しているリクエスト パラメータに基づいていること、および/または Bean の (ポスト) 構築中にロードが行われていないことを示しています。

Bean をビュー スコープに配置するか、データ ロード ロジックを再配置すると、問題が修正されます。

于 2011-05-29T03:13:16.480 に答える