我目前的代码。
<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是验证错误显示的位置。
我想知道如何捕获成功事件。
[done]如果用户输入了一些不正确的值,它会进行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 :(得分:0)
这是使用AJAX请求进行重定向的正确方法。您应该使用ExternalContext.redirect()代替:
FacesContext.getCurrentInstance().getExternalContext().redirect("yourUrl");
通过这种方式,您将收到服务器的部分响应,它将进行重定向:
<partial-response>
<redirect url="yourUrl">
</redirect>
</partial-response>
您在此方法中返回的字符串无关紧要,您甚至可以返回null
。