ResponseEntity,如何在html中获取body

时间:2016-01-09 09:01:17

标签: javascript html spring web response

我想在浏览器中显示Controller返回的ResponseEntity的主体(使用Spring):

return new ResponseEntity<>(l.getReachableDate(), HttpStatus.NOT_FOUND);

l.getReachableDate()返回Date类型,我希望以类似的方式显示它:

<header>
    <h1><span>Url is not reachable from</span> <!-- body --> </h1>
</header>

如何展示它?

2 个答案:

答案 0 :(得分:2)

我仍然不明白你为什么要这样做,但这种方式应该可行

@RequestMapping(value="/controller", method=GET)
public ResponseEntity<String> foo() {
    String content = 
           "<header>"
         + "<h1><span>Url is not reachable from</span>" +  l.getReachableDate() + "</h1>"
         + "</header>";
    HttpHeaders responseHeaders = new HttpHeaders();
    responseHeaders.setContentType(MediaType.TEXT_HTML);

    return new ResponseEntity<String>(content, responseHeaders, HttpStatus.NOT_FOUND);
}

经过一些评论......

不是将用户重定向到资源未找到的页面,最好有ResourceNotFoundRuntimeException(扩展RuntimeException)并注册MVC异常处理程序(这是prem kumar建议的,但不是自定义异常html文本):

public class ResourceNotFoundRuntimeException extends RuntimeException{
...
}

处理程序:

@ControllerAdvice
public class ExceptionHandlerController {

    @ExceptionHandler(ResourceNotFoundRuntimeException .class)
    public ResponseEntity<String> resourceNotFoundRuntimeExceptionHandling(){
        String content = 
               "<header>"
             + "<h1><span>Url is not reachable from</span>" +  l.getReachableDate() + "</h1>"
             + "</header>";
        HttpHeaders responseHeaders = new HttpHeaders();
        responseHeaders.setContentType(MediaType.TEXT_HTML);

        return new ResponseEntity<String>(content, responseHeaders, HttpStatus.NOT_FOUND);
    }
}

答案 1 :(得分:1)

如果你想使用spring从服务器端获取整个主体,那么你可以抛出一个自定义的ResourceNotFoundException并使用spring异常处理程序来处理它。

检查以下链接:

https://stackoverflow.com/a/21115267/5039001

以下链接为您提供了不同的方法。

https://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc

如果你想为不同的url使用不同的主体,那么你可以在ResourceNotFoundException中拥有一个属性html主体,并将主体作为构造函数参数传递并抛出异常。在异常处理程序中,您可以检索此正文并构建http响应消息。

public class ResourceNotFoundException extends RuntimeException{
    private String htmlBody;
    public ResourceNotFoundException(String htmlBody){
        //super(...)
        this.htmlBody = htmlBody;
    }
}

您现在可以全局重用此异常。请注意,您需要为此异常设置相应的异常处理程序,您可以访问上述共享链接。