JSF/Seam验证并重新定向到新页面
我有一个JSF1.2/Seam 2.2.2应用程序。我有一个按钮,点击按钮,我在当前页面的对象上运行验证,查询一些依赖对象并运行验证。如果验证通过,那么我需要将用户重定向到新页面。否则,我需要在同一页中显示验证错误。下面的代码工作正常,并显示错误消息。但是如何重定向到新页面JSF/Seam验证并重新定向到新页面,jsf,seam,Jsf,Seam,我有一个JSF1.2/Seam 2.2.2应用程序。我有一个按钮,点击按钮,我在当前页面的对象上运行验证,查询一些依赖对象并运行验证。如果验证通过,那么我需要将用户重定向到新页面。否则,我需要在同一页中显示验证错误。下面的代码工作正常,并显示错误消息。但是如何重定向到新页面 <h:messages id="errorMsg" errorClass="errorMessages" /> <a4j:commandButton action="#{myController.shoul
<h:messages id="errorMsg" errorClass="errorMessages" />
<a4j:commandButton action="#{myController.shouldRedirectToNewPage()}"
value="Button" styleClass="button" />
public void shouldRedirectToNewPage() {
//Run validation on objects in the current page
//Query for dependent objects and run validation
if(validationFails) {
facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,
"ERROR MESSAGE", null));
return;
}
}
public void应重定向到newpage(){
//对当前页面中的对象运行验证
//查询相关对象并运行验证
如果(验证失败){
facesContext.addMessage(空,新的FacesMessage(FacesMessage.SEVERITY_错误,
“错误消息”,空);
返回;
}
}
使用以下两种方法之一:
或以通常的方式返回导航大小写字符串:
public String shouldRedirectToNewPage() {
// ...
if (validationFails) {
facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "ERROR MESSAGE", null));
return null;
} else {
return "otherpage";
}
}
在faces config.xml
中使用以下命令:
<navigation-case>
<from-outcome>otherpage</from-outcome>
<to-view-id>/otherpage.jsf</to-view-id>
<redirect/>
</navigation-case>
其他页面
/otherpage.jsf
(注意
,这使其成为重定向,而不是(默认)转发)
与具体问题无关,在action方法内部进行验证不一定是最佳实践。这应该由一个专家来完成。如果它抛出一个
验证器异常
,那么操作方法将不会被调用。请使用:
或以通常的方式返回导航大小写字符串:
public String shouldRedirectToNewPage() {
// ...
if (validationFails) {
facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "ERROR MESSAGE", null));
return null;
} else {
return "otherpage";
}
}
在faces config.xml
中使用以下命令:
<navigation-case>
<from-outcome>otherpage</from-outcome>
<to-view-id>/otherpage.jsf</to-view-id>
<redirect/>
</navigation-case>
其他页面
/otherpage.jsf
(注意
,这使其成为重定向,而不是(默认)转发)
与具体问题无关,在action方法内部进行验证不一定是最佳实践。这应该由一个专家来完成。如果它抛出一个
ValidatorException
,那么操作方法就不会被调用。我必须使用h:commandLink或h:commandButton来显示错误消息。我厌倦了用字符串方法重定向。但是没有调用other.xhtml上的init方法。我必须使用h:commandLink或h:commandButton来显示错误消息。我厌倦了用字符串方法重定向。但是没有调用other.xhtml上的init方法。