2013-11-28 111 views
2

我有一個基本上只是行和列數據的JSF頁面。每行的數據來自一個類的實例的屬性。每行都有一個鏈接,點擊時會調用一個支持bean方法刷新該行上的數據。行由表示它們下方的行組的標題分隔。我還想將標題設置爲鏈接,以便刷新它下面的所有行。我嘗試使用這樣的一些JavaScript:刷新元素組

function refreshGroup(){ 
    var obj1 = document.getElementById("refresh0:link0"); 
    var obj2 = document.getElementById("refresh1:link1"); 
    window.open(obj1); 
    window.open(obj2); 
}; 

但這只是打開新標籤。有什麼辦法可以讓用戶點擊每個鏈接?這就是JSF看起來像調用支持bean的鏈接:

<h:form id="refresh#{loop.index}" > 
    <h:commandLink id="link#{loop.index}" value="#{a.status}" > 
    <f:ajax listener="#{a.getCheckAppMonitor}" 
      render=":errs#{loop.index} :refresh#{loop.index} :errs_#{i+1}" 
      onevent="refreshMoreLessLinks" /> 
    </h:commandLink>&nbsp;<img id="img_#{loop.index}" 
          class="hidden" 
          src="resources/images/ajax-loader.gif"/> 
</h:form> 

這一切嵌套在c:foreach循環內。

的標題鏈接看起來是這樣的:

<h3><a href="javascript:refreshGroup();">Group 1</a></h3> 

編輯:

它發生,我認爲我需要重新創建一個commandLink這樣我就可以使一切。我這樣做:

<h:form id="header1" > 
    <h:commandLink class="link" value="Group 1" > 
    <f:ajax listener="#{appBean.refresh}" render="@all" /> 
    </h:commandLink> 
</h:form> 

,似乎工作,只是它會導致我的瀏覽器(IE8)崩潰。當瀏覽器恢復時,我可以看到它確實更新了。關於render =「@ all」的任何想法都會導致我的瀏覽器崩潰?我將@all更改爲一個元素,並且工作正常。

回答

0

var obj1 = document.getElementById("refresh0:link0"); 
window.open(obj1); 

是不觸發一個HTMLAnchorElement實例點擊正確的方式。您需要調用其click()方法。

var obj1 = document.getElementById("refresh0:link0"); 
obj1.click(); 
+0

謝謝!我會upvote,但我還不能:( – taylordurden

+0

不客氣,不用擔心選票。 – BalusC