1、概览

2、在《springboot - 返回JSON error 从自定义的 ErrorController》基础上,做如下调整:

1)、新增Attribute类和Error类

package com.ebc.controller;

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class Attribute {
private String key;
private String value; public String getKey() {
return key;
} public void setKey(String key) {
this.key = key;
} public String getValue() {
return value;
} public void setValue(String value) {
this.value = value;
}
}
package com.ebc.controller;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import java.util.List; @XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Error {
@XmlElement(name="attribute")
private List<Attribute> attributeList; public List<Attribute> getAttributeList() {
return attributeList;
} public void setAttributeList(List<Attribute> attributeList) {
this.attributeList = attributeList;
}
}

2)、修改MyCustomErrorController类

import org.springframework.boot.autoconfigure.web.servlet.error.AbstractErrorController;
import org.springframework.boot.web.servlet.error.ErrorAttributes;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;
import java.util.Map; /**
* @author www.gomepay.com
* @date 2019/11/18
*/
@Controller
public class MyCustomErrorController extends AbstractErrorController {
public MyCustomErrorController(ErrorAttributes errorAttributes) {
super(errorAttributes);
}
@RequestMapping(value = "/error", produces = MediaType.APPLICATION_XML_VALUE)
@ResponseBody
public Error handleError(HttpServletRequest request) {
Map<String, Object> errorAttributes = super.getErrorAttributes(request, true); List<Attribute> attributes = new ArrayList<>();
errorAttributes.forEach((key, value) -> {
Attribute attribute = new Attribute();
attribute.setKey(key);
attribute.setValue(value == null ? "" : value.toString());
attributes.add(attribute);
});
Error error = new Error();
error.setAttributeList(attributes);
return
error;
}

@Override
public String getErrorPath() {
return "/error";
}
}

3、执行

1)、http://localhost:8080/

<?xml version="1.0" encoding="utf-8"?>

<error>
<attribute>
<key>timestamp</key>
<value>Wed Nov 20 17:43:59 GMT+08:00 2019</value>
</attribute>
<attribute>
<key>status</key>
<value>500</value>
</attribute>
<attribute>
<key>error</key>
<value>Internal Server Error</value>
</attribute>
<attribute>
<key>message</key>
<value>test exception</value>
</attribute>
<attribute>
<key>trace</key>
<value>java.lang.RuntimeException: test exception at com.ebc.controller.MyController.handler(MyController.java:15)。。。</value>
</attribute>
<attribute>
<key>path</key>
<value>/</value>
</attribute>
</error>

2)、http://localhost:8080/other

<?xml version="1.0" encoding="utf-8"?>

<error>
<attribute>
<key>timestamp</key>
<value>Wed Nov 20 17:49:51 GMT+08:00 2019</value>
</attribute>
<attribute>
<key>status</key>
<value>404</value>
</attribute>
<attribute>
<key>error</key>
<value>Not Found</value>
</attribute>
<attribute>
<key>message</key>
<value>No message available</value>
</attribute>
<attribute>
<key>path</key>
<value>/other</value>
</attribute>
</error>

springboot - 返回xml error 从自定义的 ErrorController的更多相关文章

  1. springboot - 返回JSON error 从自定义的 ErrorController

    使用AbstractErrorController(是ErrorController的实现),返回json error. 1.概览 2.基于<springboot - 映射 /error 到自定 ...

  2. springboot - 使用ErrorAttributes 在我们自定义的 ErrorController中

    1.概览 基于<springboot - 映射 /error 到自定义且实现了ErrorController的Controller>改造,仅将MyCustomErrorController ...

  3. springboot实现xml传参和返回值

    1.新建maven工程xml-bean-convert pom.xml如下 <?xml version="1.0" encoding="UTF-8"?&g ...

  4. Asp.net mvc返回Xml结果,扩展Controller实现XmlResult以返回XML格式数据

    我们都知道Asp.net MVC自带的Action可以有多种类型,比如ActionResult,ContentResult,JsonResult……,但是很遗憾没有支持直接返回XML的XmlResul ...

  5. SpringBoot返回JSON

    目录 1.SpringBoot返回JSON简介 2.整合jackson-databind 3.整合Gson 4.整合fastjson 1.SpringBoot返回JSON简介 随着web开发前后端分离 ...

  6. springboot返回统一接口与统一异常处理

    springboot返回统一接口与统一异常处理 编写人员:yls 编写时间:2019-9-19 0001-springboot返回统一接口与统一异常处理 简介 创建统一的返回格式 Result 封装统 ...

  7. Android XML中引用自定义内部类view的四个why

    今天碰到了在XML中应用以内部类形式定义的自定义view,结果遇到了一些坑.虽然通过看了一些前辈写的文章解决了这个问题,但是我看到的几篇都没有完整说清楚why,于是决定做这个总结. 使用自定义内部类v ...

  8. mvc 返回 xml

    using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Tex ...

  9. Spring Boot 返回 XML 数据,一分钟搞定!

    Spring Boot 返回 XML 数据,前提必须已经搭建了 Spring Boot 项目,所以这一块代码就不贴了,可以点击查看之前分享的 Spring Boot 返回 JSON 数据,一分钟搞定! ...

随机推荐

  1. LinearLayout属性android:orientation

    Android布局LinearLayout注意设置属性android:orientation属性,否则有的组件可能无法显示. 该属性不设置时默认为horizontal.此时第一个控件的宽度若设置成“f ...

  2. python学习 —— python3简单使用pymysql包操作数据库

    python3只支持pymysql(cpython >= 2.6 or >= 3.3,mysql >= 4.1),python2支持mysqldb. 两个例子: import pym ...

  3. redhat 7.6 用户和组

    用户 useradd   user1     //新建用户user1 userdel   user1   //删除用户user1 userdel  -r   user1     //删除用户并且删除h ...

  4. dequeueReusableCellWithIdentifier 与 dequeueReusableCellWithIdentifier:forIndexPath 区别

    参考:http://stackoverflow.com/questions/25826383/when-to-use-dequeuereusablecellwithidentifier-vs-dequ ...

  5. SessionAttributes注解

    SessionAttributes注解: a.该注解只能应用在类上: b.该注解用于将Map.ModelMap.Model或ModelAndView中的数据暂存到HttpSession中以使其可以在多 ...

  6. JS 删除对象中指定的值

    1,通过delete删除 2,通过filter filter需要在循环的时候判断一下是true还是false,是true才会返回这个元素: let arr1 = [1,2,3]; let arr2 = ...

  7. 灵光一闪来个科普贴:Linux文件系统

    在计算机系统中,各种需要保存的信息都是以文件的形式存在的.文件管理是对系统信息资源的管理,是操作系统的一项重要功能. 1.文件与文件系统: 1.1文件: 文件是具有名字的一组相关信息的有序集合,存放在 ...

  8. 第1节 storm编程:4、storm环境安装以及storm编程模型介绍

    dataSource:数据源,生产数据的东西 spout:接收数据源过来的数据,然后将数据往下游发送 bolt:数据的处理逻辑单元.可以有很多个,基本上每个bolt都处理一部分工作,然后将数据继续往下 ...

  9. 防火墙、WAF、IPS、IDS都是什么

    防火墙 (Firewall) 别名防护墙,于1993发明并引入国际互联网. 他是一项信息安全的防护系统,依照特定的规则,允许或是限制传输的数据通过.在网络中,所谓的防火墙是指一种将内网和外网分开的方法 ...

  10. pyhton机器学习入门基础(机器学习与决策树)

    //2019.07.26#scikit-learn数据挖掘工具包1.Scikit learn是基于python的数据挖掘和机器学习的工具包,方便实现数据的数据分析与高级操作,是数据分析里面非常重要的工 ...