JSF / FaceletsでのバッキングBeanの問題を含むエラー処理ページ

error-handling facelets jsf
JSF / FaceletsでのバッキングBeanの問題を含むエラー処理ページ

https://stackoverflow.com/questions/460596/jsf-generic-exception-handling/6110101#6110101 [このソリューション]に従って、次のようなエラーページを作成しました。

faces-config.xmlで

    500
    /errore500.xhtml

errore it.jlp.prometheus.modello.Erroreリクエスト

... the page errore500.xhtml ...

プロメテウス-エラー500

 ....

…​and the class Errore

public class Errore implements Serializable {

private Log logger = LogFactory.getLog(Errore.class);

public String getStackTrace() {
    FacesContext context = FacesContext.getCurrentInstance();
    Map requestMap = context.getExternalContext().getRequestMap();
    Throwable ex = (Throwable) requestMap.get("javax.servlet.error.exception");
    StringWriter writer = new StringWriter();
    PrintWriter pw = new PrintWriter(writer);
    fillStackTrace(ex, pw);
    logger.info("****** getStackTrace executed ");
    return writer.toString();
}

private void fillStackTrace(Throwable ex, PrintWriter pw) {
    if (null == ex) {
        return;
    }
    ex.printStackTrace(pw);
    if (ex instanceof ServletException) {
        Throwable cause = ((ServletException) ex).getRootCause();
        if (null != cause) {
            pw.println("Root Cause:");
            fillStackTrace(cause, pw);
        }
        } else {
        Throwable cause = ex.getCause();

        if (null != cause) {
            pw.println("Cause:");
            fillStackTrace(cause, pw);
        }
    }
}

このコードでは、アプリケーションの別の部分で意図的にecception(ClassCastException)を引き起こすと、このページにリダイレクトされますが、バッキングBeanクラスにデバッグ印刷ログを置くことで、これはインスタンス化されないため、テキストエリアにデータが入力されません。 バッキングBeanがインスタンス化されないのはなぜですか?

  1  0


ベストアンサー

場所

/errore500.xhtml

`FacesServlet`のURLパターンと一致する必要があります。

たとえば、マップされている場合

*.jsf

次に、場所を設定する必要があります

/errore500.jsf

0


タイトルとURLをコピーしました