【发布时间】:2014-08-26 21:46:34
【问题描述】:
我一直在从事基于 Spring 的 Web 项目。大多数端点都设置为返回 XML,并且使用 REST 编组器可以正常工作。作为项目演示的一部分,我想要一个仪表板,以更易于阅读的格式显示数据。
问题是,我无法让端点返回一个字符串。当我尝试访问端点时,我收到以下错误消息:
JBWEB000065: HTTP Status 406 -
JBWEB000309: type JBWEB000067: Status report
JBWEB000068: message
JBWEB000069: description JBWEB000126: The resource identified by this request is only capable of generating responses with characteristics not acceptable according to the request 'Accept' headers.
映射请求代码如下:
@RequestMapping(value="/dash", method=RequestMethod.GET, headers="Accept=*/*",produces="text/plain")
@ResponseBody
public String customerPortal()
{
return "WEB-INF/jsp/Dash.jsp";
}
其他(XML)端点工作正常,文件本身存在。在这一点上,我会接受任何将 HTML 传输到浏览器的方式,我不需要任何花哨的东西,只需要一个不会违反 AJAX 单一来源限制的文件。如果有一个简单的解决方案,我深表歉意,我已经尝试了六种不同的解决方案,但找不到任何方法让服务器发送除 XML 之外的任何内容。
编辑:删除@ResponseBody、方法、标头并生成注释后,它现在给出以下响应:
JBWEB000065: HTTP Status 500 - Could not resolve view with name '/WEB-INF/jsp/ScorpioDash.jsp' in servlet with name 'scorpio-restservice'
JBWEB000309: type JBWEB000066: Exception report
JBWEB000068: message Could not resolve view with name '/WEB-INF/jsp/ScorpioDash.jsp' in servlet with name 'scorpio-restservice'
JBWEB000069: description JBWEB000145: The server encountered an internal error that prevented it from fulfilling this request.
JBWEB000070: exception
javax.servlet.ServletException: Could not resolve view with name '/WEB-INF/jsp/ScorpioDash.jsp' in servlet with name 'scorpio-restservice'
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1190)
org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:992)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:939)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827)
javax.servlet.http.HttpServlet.service(HttpServlet.java:734)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812)
javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
【问题讨论】:
-
您在向
/dash发送请求时发送了哪些Accept标头? -
此方法返回 Spring 必须转发到的视图的名称。所以它返回的不是响应体。所以不应该用ResponseBody注解。
-
另外,您很可能没有返回正确的字符串以转发到视图(取决于您如何设置视图解析器)
-
老实说,我不知道接受标头是什么。如果有帮助,我正在尝试从浏览器访问它。至于响应主体,我实际上是在寻找任何类型的响应。我希望以某种方式让 servlet 返回浏览器可以显示的任何内容。它不需要漂亮,我只需要让它工作。
-
把
headers从@Requestmapping中去掉,你就可以专注于上面提到的其他潜在问题了。
标签: java spring spring-mvc