0

ファセットに<p:dataTable>あります。フェイスレットはページに含まれています。テーブル行を選択すると、周囲のページの要素の更新がトリガーされます。

<p:ajax event="rowSelect" update=":open:separate" />テーブルの内側を含めると、すべて正常に機能します。しかし、私は複数のページでテーブルを使用しており、更新された要素の一定のIDを保証することはできません。

テーブルからを削除して<p:ajax>、含まれているテーブルを次のようにラップしてみました。

<p:ajax event="rowSelect" update=":open:separate">
    <ui:include src="/open/components/submittersTable.xhtml"/>
</p:ajax>

このエラーが発生します(根本原因の要約):

javax.servlet.ServletException: /open/index.xhtml @30,59 <p:ajax> Event:rowSelect is not supported.
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:606)
    org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(ConversationPropagationFilter.java:62)

root cause

javax.faces.view.facelets.TagException: /open/index.xhtml @30,59 <p:ajax> Event:rowSelect is not supported.
    org.primefaces.component.behavior.ajax.AjaxBehaviorHandler.applyAttachedObject(AjaxBehaviorHandler.java:148)
    org.primefaces.component.behavior.ajax.AjaxBehaviorHandler.apply(AjaxBehaviorHandler.java:126)

私は何が可能かについて間違った考えを持ってい<p:ajax>ますか?それをテーブルに含めて、周囲のページのIDを強制的に合わせる必要がありますか?それとも、ラップincludeすることは可能ajax ですか、私はそれを間違っていますか?

ありがとうございました

4

2 に答える 2

1

event="rowSelect"のため、できません。event="rowSelect"のいくつかの説明は、「データテーブル内の行が選択されている」ことを意味します。したがって、これを p:dataTable の外で使用することはできません。

于 2012-08-09T07:49:55.727 に答える
0

これには別のアプローチを見つけました.faceletを使用してすべてのビューにIDを強制するよりも、faceletにUIパラメーターを設定する方が間違いなく優れています。

<p:ajax>タグを facelet テーブル内に安全に残すことができます。インクルージョン サイトでパラメーターを定義するだけです。

<ui:include src="/open/components/submittersTable.xhtml">
    <ui:param name="updateParam" value=":open:content" />
</ui:include>

updatedこのパラメーターを使用するように属性を変更します。

<p:ajax event="rowSelect" update="#{updateParam}" />
于 2012-08-09T10:58:54.007 に答える