Spring无法解析servlet中的视图

Mea*_*ell 12 java spring

我已经为我的一个servlet添加了一个新的方法/映射:

@RequestMapping(value = "/user/prefs/order", method = RequestMethod.POST)
public void updateUsersPrefs(@RequestBody Map<String, ArrayList> body, HttpServletRequest request) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

但是当我向此URL发送请求时,我收到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)
Run Code Online (Sandbox Code Playgroud)

我不能为我的生活看到为什么这是报道.有人能帮忙吗?我已经提供了更多信息,请告诉我.

谢谢!

mat*_*t b 31

Spring 以下列方式处理@RequestMapping具有void返回类型的方法:

void- 如果方法处理响应本身(通过直接编写响应内容,为此目的声明类型ServletResponse/ 的参数HttpServletResponse)或者是否应该通过a隐式确定视图名称RequestToViewNameTranslator(不在处理程序方法签名中声明响应参数) ).

因此,由于HttpServletResponse此方法没有参数,因此Spring假定您希望通过a确定视图名称RequestToViewNameTranslator.

如果您没有RequestToViewNameTranslator在上下文中指定要使用的特定内容,那么默认实现将在其中启动:

只需将传入请求的URI转换为视图名称即可.

如果您不希望将传入请求的URI用作视图名称,则可以使用以下几个选项:

  1. RequestToViewNameTranslator使用您想要的行为配置自定义
  2. HttpServletResponse如果要直接写入响应而不是查看解析,请向此方法添加参数.
  3. 更改此方法的返回类型String,View, orModelAndView`能够指定方法中的视图或视图名称.

  • 你有一个小错字:"因此,因为没有`HttpServletRequest`"应该是"因为没有`HttpServlet*Response*`" (2认同)