0

現在、Web アプリケーションを Primefaces 3.5 から 4.0 に更新しています。onclick のリンクを介してインプレース編集を切り替えるために使用した複合コンポーネントがありますp:widgetVar('dlg').show()。これを Primefaces 4.0 の方法に更新しましたPF('dlg').show();が、機能しません。

コードは次のようなものです。

<p:inplace id="inplaceEdit" widgetVar="ie_#{cc.attrs.pojo.id}"
           editor="true"
           styleClass="description" emptyLabel="Enter A Description" >
    <p:inputText value="#{cc.attrs.pojo.description}"
                 required="true" maxlength="140"
                 label="description" styleClass="description">
        <p:ajax process="@this" listener="#{cc.attrs.bean.update(cc.attrs.pojo)}"/>
    </p:inputText>
</p:inplace>

<h:panelGroup>
    <div class="aap-btn-group">
        <p:commandLink id="pieButton" onclick="PF('ie_#{cc.attrs.pojo.id}').show()">
            <i class="icon icon-edit"></i>
        </p:commandLink>
    </div>
</h:panelGroup>

これは私のページにリンクを出力しますPF('ie_19').show()が、ブラウザコンソールから関数を呼び出してもインプレース編集を切り替えません。

4

1 に答える 1

0

私の問題の原因を見つけました。この投稿で @balusc が提供する jsf 修正を使用しています: h:commandButton/h:commandLink は最初のクリックでは機能せず、2 回目のクリックでのみ機能します

スクリプトはチェックしますif(update.getAttribute("id") == "javax.faces.ViewState")が、JSF 2.2 に更新したため、文字列が正確には「javax.faces.ViewState」ではないようです。私が見たChromesデバッガーで実行します"j_id1:javax.faces.ViewState:0"

この問題を解決するために、スクリプトのその部分を次のように変更しました。if(update.getAttribute("id").indexOf("javax.faces.ViewState") !== -1)これは、id 属性文字列に「javax.faces.ViewState」が含まれている場合に true を返します。

于 2013-10-28T12:32:43.703 に答える