0

p:commandLink に問題があります

これはリンクコードです

<p:commandLink partialsubmit="true" id="c2aLink" immediate="true" ajax="true" update="generalPanel" action="#{tabularbean.refresh}"/>

問題は、このリンクをクリックすると、パネルが更新されるだけでなく、ページがリロードされることです。

ページ全体を再度リロードせずにパネルのみを更新したい

注: このリンクをクリックするには JavaScript コードを使用します

JavaScript コード:

render: function(options) { var c2aLink = this.findElementWithIdLike(iframe.contentWindow,'c2aLink'); c2aLink.click();},

findElementWithIdLike :function(wind,prefix) {
    return this.findChildWithIdLike2(wind.document.body, prefix);
},

findChildWithIdLike2 :function(node, prefix) {
    if (node && node.id && node.id.indexOf(prefix) >= 0) {
        //match found
        return node;
    }

    //no match, check child nodes
    for (var index = 0; index < node.childNodes.length; index++) {
        var child = node.childNodes[index];
        var childResult = this.findChildWithIdLike2(child, prefix);
        if (childResult) {
            return childResult;
        }
    }
},`
4

2 に答える 2

0

onclickメソッドではなく、要素の属性ハンドラを呼び出す必要がありますclick()

交換

c2aLink.click();

c2aLink.onclick();

PrimeFaces ajax はonclick属性で定義されています。

これはすべて JSF/PrimeFaces とは関係がないことに注意してください。JSF/PrimeFaces によって生成されたものと同じ HTML コードを使用すると、まったく同じ問題が発生します。将来的には、JSF/PrimeFaces の代わりに問題を解決/再現するために、「プレーンな」HTML をいじってみるとより役立つでしょう。また、HTML/JavaScript のコンテキストで質問した場合は、回答がより早く得られる可能性が高くなります。

于 2013-05-28T11:29:04.323 に答える
0

partialSubmitフォーム/フォームの一部が送信されたときにのみ機能します。を使用できます oncomplete="submit()"これは、ajax リクエストが完了したときに実行するクライアント側のコールバックです。

使用する :

process="@this" update="generalPanel"

フォームの使用を更新したい場合に備えて:

update="@form"

この場合、JavaScript コードはまったく必要ありません。プライムフェイスのような API が組み込まれています。

于 2014-06-27T13:19:09.260 に答える