2015-01-17 4 views
-1

h : commandlink 및 대화 상자에 문제가 있습니다. 커맨드 링크를 클릭하면 대화 상자가 나타나고 자바 메소드가 실행되기를 원합니다. 많은 솔루션을 시도했지만 항상 대화 상자를 열거 나 메서드를 호출 할 수 있습니다. 이 방법은 호출해야 명령 링크의 동작을 실행하고 대화 상자를 표시하십시오.

<h:head>   
<script type="text/javascript"> 
      function addEmployee() { 
       window.location.href = "#popupEmployee"; 
      } 
     </script> 

</h:head> 
<h:body> 
    <div id="popupEmployee" class="popupDialog"> 
     <h1> This is a popup</h1> 
    </div> 

    <h:form> 

      <h:dataTable value="#{controller.employee}" var="m" 
         styleClass="order-table" 
         headerClass="order-table-header" 
         rowClasses="order-table-odd-row,order-table-even-row"      
         > 

       <h:column> 
        <h:commandLink id="changeEmployee" actionListener="#{controller.changeEmployee}" onclick="addEmployee()"> 
         <img src="images/stift.png" width="30" heigth="30"/> 
        </h:commandLink>    
       </h:column> 

      </h:dataTable> 

    </h:form> 
    </div> 

그리고 컨트롤러

: 다음은 XHTML의 일부 년대 CommandLink는에 클릭이 대화 상자가 잠깐과 URL에 나타납니다

public void changeEmployee(){  
     System.out.println("YEAH!"); 
} 

"#popupEmployee"가 삭제되었습니다. 대화 상자가 사라지지 않도록 무엇을 변경할 수 있습니까?

참고 : div는 CSS와 대화 상자가됩니다.

답변

2

서버 상태를 변경하려면 AJAX request을 사용해야합니다.

<h:commandLink id="changeEmployee" onclick="addEmployee()"> 
    <f:ajax listener="#{controller.changeEmployee}"/> 
    <img src="images/stift.png" width="30" heigth="30"/> 
</h:commandLink> 

h:commandLink 만 사용하면 양식을 제출할 수 있습니다. 이로 인해 전체 페이지가 다시로드됩니다. 페이지가 다시로드되기 때문에 이전 페이지에서 호출 된 JavaScript는 새 페이지에 영향을주지 않습니다.

AJAX 요청은 현재 페이지를 다시로드하지 않지만 대화 상자를 표시하는 데 사용할 수있는 페이지 일부를 새로 고칠 수 있습니다.

+0

그게 해결책 이었어! 정말 고맙습니다!! –

관련 문제