我已经为我的一个servlet添加了一个新的方法/映射:
@RequestMapping(value = "/user/prefs/order", method = RequestMethod.POST)
public void updateUsersPrefs(@RequestBody Map<String, ArrayList> body, HttpServletRequest request) {
...
}
但是当我向此网址发送请求时,我收到500内部服务器错误,并显示以下错误消息:
javax.servlet.ServletException: Could not resolve view with name 'user/prefs/order' in servlet with name 'appfinder'
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1029)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:817)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
我不能为我的生活看到为什么要报道这一点。有人能帮忙吗?我可以提供更多信息,请告诉我。
谢谢!
答案 0 :(得分:31)
Spring使用@RequestMapping
返回类型in the following manner处理void
方法:
void
- 如果方法处理响应本身(通过直接编写响应内容,为此目的声明类型为ServletResponse
/HttpServletResponse
的参数或者,如果视图名称应该通过RequestToViewNameTranslator
隐式确定(不在处理程序方法签名中声明响应参数)。
因此,由于此方法没有HttpServletResponse
参数,因此Spring假定您希望通过RequestToViewNameTranslator
确定视图名称。
如果您未在上下文中指定要使用的特定RequestToViewNameTranslator
,则the default implementation kicks in which will:
只是将传入请求的URI转换为视图名称。
如果您不希望将传入请求的URI用作视图名称,则可以选择以下几个选项:
RequestToViewNameTranslator
HttpServletResponse
参数。String
,View, or
ModelAndView`,以便能够在方法中指定视图或视图名称。答案 1 :(得分:4)
我遇到了这个问题,原因是我使用的是tile框架,并没有在tiles-def.xml中提及视图名称。配置完tile-def.xml后问题就解决了。
答案 2 :(得分:2)
我也有这个问题。 我使用@ResponseBody注释解决了它。
像这样:
@RequestMapping(value = "/user/prefs/order", method = RequestMethod.POST)
@ResponseBody
public void updateUsersPrefs(@RequestBody Map<String, ArrayList> body, HttpServletRequest request) {
...
}