[Ajax4JSF] JSF2.1:重定向传值

haojie_java_ms 2014-09-12
在自定义ExceptionHandler中将页面redirect到error页面时,想把错误信息打印在页面上,所以使用了JSF的<h:messages/>标签,这样问题就出现了,画面重定向之后错误信息就不能显示了,我知道页面重定向之后,不能传递参数,但是项目需求奇怪啊。。。

求解决啊!!!!!

以下是截取项目中的代码,请参考:

xxxCmd.java代码:

public String goNextPage() {
    if (true) {
        throw new SystemException();
    }
    return "nextPage.xhtml";
}

异常处理类MyExceptionHandler.java代码:
public void handle() throw FacesException{
    FacesContext ctx = getFacesContext();
    FacesMessage fm = new FacesMessage(FacesMessage.SEVERITY_ERROR, "This is error!", "");
    ctx.addMessage(ctx.getViewRoot().getId(), fm);

    NavigationHandler nav = ctx .getApplication().getNavigationHandler();
        nav.handleNavigation(ctx , null, "/error?faces-redirect=true");
        ctx .renderResponse();
}


错误画面error.xhtml
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html" xmlns:armada="http://armada.com"
    xmlns:ui="http://java.sun.com/jsf/facelets">
<f:view>
    <h:head>
        <title>system error page</title>
        <h:outputStylesheet library="css" name="stylesheet.css" />
        <script src="../js/common.js"></script>
    </h:head>
    <h:body>
        <h:messages />
    </h:body>
</f:view>
</html>
Global site tag (gtag.js) - Google Analytics