このチュートリアルに基づいて、デフォルトのホワイトラベルを置き換えるカスタムエラーページを作成しました。正常に機能しましたが、他の属性をページに渡す必要があるため、ここでgeoandの回答にerror
基づいてエンドポイントをインターセプトするようにコードを変更しました。
これが私の最終的なコードです:
@Controller
public class ErroHandlerController implements ErrorController {
@Value("${terena.midas.location}")
private String midasLocation;
@RequestMapping("/error")
public String handleError( Model model ) {
model.addAttribute( "midasLocation", midasLocation );
return "error";
}
@Override
public String getErrorPath() {
return "/error";
}
}
コードは変数midasLocationの送信で機能しましたが、パス、ステータス、メッセージなどのエラーの詳細が失われました...どうすればそれらを元に戻すことができますか?
あなたは使用する必要がありますErrorAttributes 「ログインまたはユーザに提示することができるエラー属性へのアクセスを提供します」。
見てください:
基本機能:
import org.springframework.boot.web.servlet.error.ErrorAttributes;
import org.springframework.boot.web.servlet.error.ErrorController;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.context.request.WebRequest;
@Controller
public class ErrorHandler implements ErrorController {
private final ErrorAttributes errorAttributes;
public ErrorHandler(ErrorAttributes errorAttributes) {
this.errorAttributes = errorAttributes;
}
@GetMapping("/error")
public String handleError(Model model, WebRequest webRequest) {
model.addAttribute("midasLocation", "xxx");
final Throwable error = errorAttributes.getError(webRequest);
model.addAttribute("exception", error);
model.addAttribute("message", error == null ? "" : error.getMessage());
return "error";
}
@Override public String getErrorPath() {
return "/error";
}
@GetMapping("/throwErrorForTest")
public String throwError() {
throw new RuntimeException("my exception");
}
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加