CommandLink primefaces

时间:2013-05-27 14:54:23

标签: javascript jsf primefaces

我的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;
        }
    }
},`

2 个答案:

答案 0 :(得分:0)

您需要调用元素的onclick属性处理程序,而不是click()方法。

替换

c2aLink.click();

通过

c2aLink.onclick();

PrimeFaces ajax的内容在onclick属性中定义。

请注意,这一切都与JSF / PrimeFaces无关。使用与JSF / PrimeFaces生成的相同HTML代码时,您遇到了完全相同的问题。在将来,如果您使用“普通”HTML来解决问题而不是JSF / PrimeFaces会更有帮助。如果您在HTML / JavaScript上下文中提出问题,您也可以更快地获得答案。

答案 1 :(得分:0)

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

使用:

process="@this" update="generalPanel"

以防您想要更新表单使用:

update="@form"

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