実戦分析:Spring boot&Freemaker統一異常処理FreeMarker template error
FreemarkerException Handler設定を参考にしてフリーマーケットページ上の異常を捕獲します.
Freemarkerページで$を使うと、
また、アメリカは空です.Freemarkerページが崩れます.標準値を設定する必要があります.オブジェクトが空のエラーを回避します.
同じ理屈で$US er.userNameもこのように書くべきです.
今は必要なものがあります.もし使ったら、ページが崩れたくないです.どうすればいいですか?
本文で使用するのはスプリングMVC-servlet.xmlを配置する方式です.
Spring bootでは、propertiesまたはymlファイルに追加します.
そしてクラスの内容は
そして処理すべき点:
Spring Bootは、処理中に異常が発生すると、要求に処理が移り、グローバルエラーページがあるデフォルトのマッピングを提供する.
異常内容を示すために使用します.
この要求にはグローバルエラーページがあります.
だから私達は足を着手して、このルートの呼び出しの種類から手をつけます.
Spring Boot Error Controllerインターフェース処理404、500などのエラーページを実現します.
私たちはError Controllerインターフェースを実現し、handleErr方法を書き換える必要があります.
したがって、あなたのカスタム統一異常処理クラスの構造は
Freemarkerページで$を使うと、
また、アメリカは空です.Freemarkerページが崩れます.標準値を設定する必要があります.オブジェクトが空のエラーを回避します.
同じ理屈で$US er.userNameもこのように書くべきです.
今は必要なものがあります.もし使ったら、ページが崩れたくないです.どうすればいいですか?
本文で使用するのはスプリングMVC-servlet.xmlを配置する方式です.
Spring bootでは、propertiesまたはymlファイルに追加します.
spring.freemarker.settings.template_exception_handler=com.***.FreemarkerExceptionHandler
このような異常はどの種類が処理されますか?そしてクラスの内容は
package com.***.exception;
import freemarker.core.Environment;
import freemarker.template.TemplateException;
import freemarker.template.TemplateExceptionHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import java.io.IOException;
import java.io.Writer;
public class FreemarkerExceptionHandler implements TemplateExceptionHandler {
private static final Logger log = LoggerFactory.getLogger(FreemarkerExceptionHandler.class);
@Override
public void handleTemplateException(TemplateException te, Environment env, Writer out) throws TemplateException {
log.warn("[Freemarker Error: " + te.getMessage() + "]");
String missingVariable = "undefined";
try {
String[] tmp = te.getMessageWithoutStackTop().split("
");
if (tmp.length > 1)
tmp = tmp[1].split(" ");
if (tmp.length > 1)
missingVariable = tmp[1];
out.write("");
log.error("[ , ]", te);
} catch (IOException e) {
throw new TemplateException(
"Failed to print error message. Cause: " + e, env);
}
}
}
ここに来て、異常を投げたとしか言えませんが、このエラーはやはりエラーとして報告されています.フロントでレンダリングしている間に、このエラーはブロックできます.そして処理すべき点:
Spring Bootは、処理中に異常が発生すると、要求に処理が移り、グローバルエラーページがあるデフォルトのマッピングを提供する.
異常内容を示すために使用します.
この要求にはグローバルエラーページがあります.
だから私達は足を着手して、このルートの呼び出しの種類から手をつけます.
Spring Boot Error Controllerインターフェース処理404、500などのエラーページを実現します.
私たちはError Controllerインターフェースを実現し、handleErr方法を書き換える必要があります.
したがって、あなたのカスタム統一異常処理クラスの構造は
import org.springframework.boot.web.servlet.error.ErrorController;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping(value = "error")
public class CustomErrorController implements ErrorController {
@Override
public String getErrorPath() {
return "error40x";// 404 fileName, template
}
@RequestMapping
public String error() {
return getErrorPath();
}
}