2013-11-28 2 views
2

본질적으로 단지 데이터의 행과 열인 JSF 페이지가 있습니다. 각 행의 데이터는 클래스 인스턴스의 속성에서 가져옵니다. 각 행에 클릭하면 해당 행의 데이터를 새로 고치는 백업 빈 메서드가 호출되는 링크가 있습니다. 행은 그 아래에있는 행 그룹을 나타내는 표제로 구분됩니다. 제목 아래에 모든 행을 새로 고칠 수 있도록 제목도 링크로 만들고 싶습니다. 이런 자바 스크립트를 사용해 보았습니다.요소 그룹 새로 고침

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

방금 ​​새 탭이 열렸습니다. 사용자가 각 링크를 클릭 한 것처럼 작동하도록 할 수있는 방법이 있습니까? 이는 JSF가 백킹 빈을 호출하는 링크의 모습입니다 :

<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

관련 문제