2013-05-27 31 views
0

我有與對一個問題:commandLinkCommandLink primefaces

這是鏈接代碼

<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; 
     } 
    } 
},` 
+1

你能發佈javascript代碼嗎? – dratewka

+0

我更新了帖子以包含javascript代碼 – user2425231

+0

當按鈕被點擊時,它是否提交了一個ajax請求,然後刷新比你想要的還要多,還是發生了完整的提交? – dratewka

回答

0

您需要調用元素的onclick屬性處理程序,而不是click()方法。

通過

c2aLink.onclick(); 

的PrimeFaces AJAX的東西是onclick屬性definied更換

c2aLink.click(); 

請注意,這一切與JSF/PrimeFaces無關。使用與JSF/PrimeFaces生成的相同的HTML代碼時,您會遇到完全相同的問題。在未來,如果您使用「純文本」HTML代替JSF/PrimeFaces來重現問題,那麼它會更有幫助。如果您在HTML/JavaScript上下文中提問,您也將有更快獲得答案的機會。

0

partialSubmit只有在表單的表格/部分被提交時纔有效。您可以使用 oncomplete="submit()";這是當ajax請求完成時執行的客戶端回調。

用途:

process="@this" update="generalPanel" 

以防萬一你要更新的形式使用:

update="@form" 

在這種情況下,完全沒有必要的JavaScript代碼。像primefaces API已內置。

相關問題