/ / PrimefacesはJavascriptを介して要素属性を変更します-javascript、jsf、primefaces

PrimefacesはJavascriptを介して要素の属性を変更します - javascript、jsf、primefaces

Primefaces 3を使用するプロジェクトに取り組んでいます。5(そう、かなり古いバージョンです)。私が実装したかったのは、Primefaces要素の属性を変更するJavascriptの関数です。することは可能ですか?

私が持っているのは、次のように定義されたパネルです。

<p:panel id="mypanel" widgetVar="mypanelWidget" header="A title here" toggleable="true" toggleOrientation="vertical" collapsed="true">

そして、私の考えは変えることです collapsed="true"collapsed="false" Javascriptを使用します。

この必要性は、パネルを更新するajax呼び出しのために急増し、更新されると、折りたたまれたように見えます。やること mypanelWidget.expand() 私のページが非常にアニメーション化されるので、コールバック時はお勧めできません。

回答:

回答№1は2

2つのオプション:

  1. 単にELを使用する collapsed ハードコードを指定する代わりに、いくつかのモデルの状態をチェックする属性 true.

    <p:panel ... collapsed="#{not bean.ajaxMethodCalled}">
    

    それにより、あなたはそれを確認します isAjaxMethodCalled() 返品 true 対象のajaxメソッドが呼び出された場合。 必ずしもブール値のプロパティである必要はありません。目的のブール値の結果を評価する限り、HTTPリクエストパラメータマップのチェックなど、何でもかまいません。

  2. ajax呼び出し中にパネル自体を更新しないでください。代わりに、その内容を更新してください。

    <p:panel ...>
    <h:panelGroup layout="block" id="panelContents">
    ...
    <p:ajax update="panelContents" />
    ...
    </h:panelGroup>
    </p:panel>
    

    このようにして、HTML DOMツリー内のパネルのHTML表現の状態はそのまま残ります。