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 代码时,您会遇到完全相同的问题。将来,如果您使用“普通”HTML 来确定/重现问题而不是 JSF/PrimeFaces,将会更有帮助。如果您在 HTML/JavaScript 上下文中提出问题,您也将有更好的机会更快地获得答案。

于 2013-05-28T11:29:04.323 回答
0

partialSubmit仅在提交表单/表单的一部分时才有效。您可以使用 oncomplete="submit()"; 这是 ajax 请求完成时执行的客户端回调。

利用 :

process="@this" update="generalPanel"

以防万一您想更新表单使用:

update="@form"

在这种情况下,绝对不需要 javaScript 代码。像 primefaces 这样的 API 是内置的。

于 2014-06-27T13:19:09.260 回答