2012-06-21 4 views
1

Я это приложение написано в JSF 2.0 Facelets и имеет следующий код, который должен отображать некоторые содержания в области, которая управляет слайд JQuery, а это означает, что вы нажать на кнопку, которая отображает эту область и нажмите ее еще раз, чтобы скрыть егоAjax не работает прямо в JSF с JQuery слайд

<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 для ввода материала в,

Дело в том, что при нажатии кнопки отправки (не показано здесь) слайд замерзает, и сообщение об ошибке не отображается. Когда я удаляю «ajax», отображается сообщение, но слайд исчезает, и вам нужно снова нажать кнопку переключения, чтобы увидеть слайд с сообщениями об ошибках, я сделал это на той же странице, но без слайда, и он очень хорош.

Есть ли прочь, чтобы отобразить слайд и сообщения об ошибках на нем ???

ответ

2

Сценарий jQuery, который отвечает за настройку слайдов, должен быть повторно выполнен, когда запрос ajax JSF завершается, просто потому, что ответ ajax изменяет/заменяет элементы в дереве HTML DOM с новыми элементами, полученными с сервера, что в свою очередь конечно, не содержат этих обработчиков событий, инициализированных jQuery. Сценарий jQuery не выполняется автоматически при каждом выполнении запроса ajax, но только при обновлении страницы.

Вам просто нужно повторно вызвать вашу функцию JQuery в JSF Ajax события обработчик обратного вызова следующим образом:

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

Альтернативой является использование OmniFaces' <o:onloadScript>.

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

Этот способ также не нужен $(document).ready().

+0

Я использую JSF с netbeans 7, как использовать jsf.ajax от него, я попытался найти его, но он говорит, что я должен использовать тег , это можно сделать и с этим тегом? – engma

+0

Данный первый блок кода - это просто код JS. Поместите или загрузите его в '' или '

Смежные вопросы