springboot - 使用ErrorAttributes 在咱們自定義的 ErrorController中

一、概覽html

 

 

基於《springboot - 映射 /error 到自定義且實現了ErrorController的Controller》改造,僅將MyCustomErrorController類修改以下:java

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";
    }
}

執行:web

 

 

在咱們自定義的 ErrorController中使用ErrorAttributes,可代替error.jsp 404.jsp頁面。spring

相關文章
相關標籤/搜索