2012-06-21 2 views
1

JQuery와 슬라이드와 JSF에서 제대로 작동하지 그리고 그것은 jQuery를 슬라이드을 제어하는 ​​지역의 일부 내용을 표시하는데 다음과 같은 코드를 가지고 당신이 내가이 전에 말했다과 같이 그 지역을 표시하는 버튼을 누르면 당신이 이메일이 올바르게 입력되지 않은 경우 표시되어야합니다 오류 메시지이 볼 수 있듯이 그것을아약스 나는이 응용 프로그램이 <strong>JSF 2.0 Facelets의</strong>에 쓴

<f:ajax render="messageID"> 
     <h:form id="myform" styleClass="form1" > 
      <h:message id="messageID" for="signinemail" class="messageforlogin"/> 
      <h:panelGrid styleClass="loginpanel" columns="2" cellspacing="4"> 

      <h:outputText value="Email: "/> 
      <h:inputText class="textboxes" size="20" id="signinemail" 
         value="#{signinBean.email}" 
         validatorMessage="Invalid Email, Try Again"> 
       <f:validateRegex pattern="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"/> 

      </h:inputText> 

을 숨길 다시 누르면 영역은 jquery.slidetoggle 함수와 버튼으로 제어되어 sli가됩니다. de를 입력하려면

용도는 제출 단추 (여기에 표시되지 않음)를 누르면 슬라이드가 고정되고 오류 메시지가 표시되지 않습니다. 메시지가 표시되지만 슬라이드는 표시되지 않습니다. 사라지고 당신은 오류 메시지가있는 슬라이드를 보려면 토글 버튼을 다시 눌러야 만합니다. 같은 페이지에서이 작업을 수행했지만 슬라이드가 없으면 아주 이상하지 않습니다.

슬라이드 및 오류 메시지를 표시 할 거리가 있습니까?

답변

2

슬라이드를 설정하는 jQuery 스크립트는 JSF ajax 요청이 완료되면 다시 실행되어야합니다. 간단히 말해서 ajax 응답은 HTML DOM 트리의 요소를 서버에서 검색된 새로운 요소로 변경/대체하기 때문입니다 물론 jQuery로 초기화 된 이벤트 핸들러가 더 이상 포함되지 않습니다. jQuery 스크립트는 ajax 요청이 완료 될 때마다 자동으로 실행되지 않지만 페이지를 새로 고칠 때마다 실행됩니다.

jsf.ajax.addOnEvent(function(data) { 
    if (data.status == "success") { 
     yourjQueryFunctionWhichAddsTheSlideEvents(); 
    } 
}); 

대안이 OmniFaces '<o:onloadScript>을 사용하는 것입니다 : 다음과 같이

당신은 바로 JSF 아약스 이벤트 콜백 핸들러에서 다시 호출하여 jQuery를 기능에 필요합니다.

<o:onloadScript>yourjQueryFunctionWhichAddsTheSlideEvents();</o:onloadScript> 

이렇게하면 더 이상 $(document).ready()이 필요하지 않습니다.

+0

jsf.ajax를 사용하여 netbeans 7에서 JSF를 사용하고 있는데, 찾으려고했지만 태그를 사용해야한다고 말합니다.이 태그도 함께 사용할 수 있습니까 ?? – engma

+0

주어진 첫 번째 코드 블록은 JS 코드입니다. ''또는'