0

我当前的代码。

<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

4

1 回答 1

0

这不是使用 AJAX 请求进行重定向的正确方法。您应该改用ExternalContext.redirect()

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

这样,您将收到来自服务器的部分响应,这将进行重定向:

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

您在此方法中返回的字符串无关紧要,您甚至可以 return null

于 2013-02-11T10:19:53.497 回答