springboot - 使用ErrorAttributes 在我们自定义的 ErrorController中
2024-10-08 16:31:18
1、概览
基于《springboot - 映射 /error 到自定义且实现了ErrorController的Controller》改造,仅将MyCustomErrorController类修改如下:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.web.servlet.error.ErrorAttributes;
import org.springframework.boot.web.servlet.error.ErrorController;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.context.request.ServletWebRequest; import javax.servlet.http.HttpServletRequest;
import java.util.Map; /**
* @author www.gomepay.com
* @date 2019/11/18
*/
@Controller
public class MyCustomErrorController implements ErrorController {
@Autowired
private ErrorAttributes errorAttributes; @RequestMapping("/error")
@ResponseBody
public String handleError(HttpServletRequest request) {
ServletWebRequest servletWebRequest = new ServletWebRequest(request);
Map<String, Object> errorAttributes = this.errorAttributes.getErrorAttributes(servletWebRequest, true);
final StringBuilder errorDetails = new StringBuilder();
errorAttributes.forEach((attribute, value) -> {
errorDetails.append("<tr><td>")
.append(attribute)
.append("</td><td><pre>")
.append(value)
.append("</pre></td></tr>");
}); return String.format("<html><head><style>td{vertical-align:top;border:solid 1px #666;}</style>"
+ "</head><body><h2>Error Page</h2><table>%s</table></body></html>", errorDetails.toString());
} @Override
public String getErrorPath() {
return "/error";
}
}
执行:
在我们自定义的 ErrorController中使用ErrorAttributes,可代替error.jsp 404.jsp页面。
最新文章
- Undefined symbols for architecture arm64解决方案
- IBatis 2.x 和 MyBatis 3.0.x 的区别(从 iBatis 到 MyBatis)
- 百度地图api
- nginx+uwsgi+django+celery+supervisord环境部署
- 【JAVA】LOG4J使用心得
- cocos2dx游戏开发——微信打飞机学习笔记(五)——BackgroundLayer的搭建
- 高放的c++学习笔记之类
- Linux下常用的压缩与解压命令
- 公众号第三方平台开发-aes解密失败
- Docker三十分钟快速入门(上)
- Tomcat源码调试环境搭建
- 14.QT-QFile文件,QBuffer缓冲区,QDir目录,QFileSystemWatcher文件系统监视
- select * 和 select 所有字段的区别
- Java文件上传之SpringMVC实例
- [转]阿里巴巴十年Java架构师分享,会了这个知识点的人都去BAT了
- FluentScheduler:开源轻量级定时任务调度架构
- [转]如何取得当前正在执行的shell脚本的绝对路径?
- ASP.netMVC文件下载的几种方法
- NOIP模拟赛11
- Kaggle:Titanic: Machine Learning from Disaster