JSF/Seam验证并重新定向到新页面

JSF/Seam验证并重新定向到新页面,jsf,seam,Jsf,Seam,我有一个JSF1.2/Seam 2.2.2应用程序。我有一个按钮,点击按钮,我在当前页面的对象上运行验证,查询一些依赖对象并运行验证。如果验证通过,那么我需要将用户重定向到新页面。否则,我需要在同一页中显示验证错误。下面的代码工作正常,并显示错误消息。但是如何重定向到新页面 <h:messages id="errorMsg" errorClass="errorMessages" /> <a4j:commandButton action="#{myController.shoul

我有一个JSF1.2/Seam 2.2.2应用程序。我有一个按钮,点击按钮,我在当前页面的对象上运行验证,查询一些依赖对象并运行验证。如果验证通过,那么我需要将用户重定向到新页面。否则,我需要在同一页中显示验证错误。下面的代码工作正常,并显示错误消息。但是如何重定向到新页面

<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方法。