2013-02-11 3 views
0

мой текущий код.JSF commandbutton ajax: как захватить событие успеха/сбоя

<h:form> 
    <h:panelGroup id="messagePanel" layout="block"> 
     <h:messages errorStyle="color: red" infoStyle="color: green" layout="table"/> 
    </h:panelGroup> 
    <h:panelGrid columns="2"> 

     // some form input stuff here.. 

    </h:panelGrid>   

    <h:commandButton class="register-btn" action="#{accountController.create}" value="#{bundle.Register}"> 
     <f:ajax event="action" execute="@form" render="messagePanel"/> 
    </h:commandButton>      
</h:form> 

messagePanel, где отображаются ошибки проверки.

Я хочу знать, как захватить событие успеха.

[сделано], если введенные пользователем некоторые неправильные значения, это делает AJAX проверки и отображает неправильные значения

[проблемы], если успех он должен перенаправить на другую страницу.

** обновленный

создать метод

public String create() { 
     try { 

      getFacadeUser().create(currentUser); 

      JsfUtil.addSuccessMessage(ResourceBundle.getBundle("/Bundle").getString("AccountCreated")); 
      return prepareCreate(); 
     } catch (Exception e) { 
      JsfUtil.addErrorMessage(e, ResourceBundle.getBundle("/Bundle").getString("PersistenceErrorOccured")); 
      return null; 
     } 
    } 

public String prepareCreate() { 
    current = new Account(); 
    selectedItemIndex = -1; 
    return "index"; 
} 

я использую JSF 2.1

+0

Покажите нам код метода 'create' и, пожалуйста, отправьте версию JSF. – partlov

+0

привет, спасибо за ответ. я обновил вопрос – galao

ответ

0

Это не правильный способ сделать перенаправление с запросом AJAX. Вы должны использовать ExternalContext.redirect() вместо:

FacesContext.getCurrentInstance().getExternalContext().redirect("yourUrl"); 

Таким образом, вы будете получать частичный ответ от сервера к, который будет делать Перенаправление:

<partial-response> 
    <redirect url="yourUrl"> 
    </redirect> 
</partial-response> 

Строка, который вы вернулись в этом методе не имеет значения, вы можете даже возврат null.

+0

ах спасибо! он работает, если я могу добавить еще один вопрос, как насчет того, если я хочу вызывать javascript после успешного создания? в настоящее время моя форма создания является всплывающей модальной, я хочу, чтобы просто скрыть модальность после успешного создания, будет ли это возможно? благодаря! – galao

+0

Вы должны отправить отдельный вопрос. Не используйте два дополнительных вопроса в комментариях. – partlov

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