mjf*_*mjf 27 java spring spring-mvc
为什么我不能在控制器中使用它
@RequestMapping(method = RequestMethod.POST)
public String onSubmit(
Model model,
@ModelAttribute("form") Form form,
BindingResult result, HttpServletRequest request)
throws IOException, WriteException, BiffException {
if (result.hasErrors()) {
return "redirect:index.html";
}
}
Run Code Online (Sandbox Code Playgroud)
我明白了:
javax.servlet.ServletException:无法解析名为'dispatcher'的servlet中名为'redirect:index.html'的视图
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1042)
org.springframework.web. servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:798)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
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:637)
javax.servlet.http.HttpServlet.service(httpServlet.java:717)
org. netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
我以前有这个工作.为什么不是现在?
Jig*_*shi 58
试试这个,如果您已正确配置了视图解析器,它应该可以正常工作
return "redirect:/index.html";
Run Code Online (Sandbox Code Playgroud)
axt*_*avt 25
另外请注意,redirect:和forward:前缀被处理UrlBasedViewResolver,所以你需要有至少一个子集中UrlBasedViewResolver的视图解析器,比如之中InternalResourceViewResolver.
为了完成答案,Spring MVC使用viewResolver(例如,作为axtavt metionned,InternalResourceViewResolver)来获取特定视图.因此,第一步是确保配置了viewResolver.
其次,你应该注意重定向的URL(重定向或前进).以"/"开头的url表示它是应用程序中的绝对URL.正如吉格尔所说,
return "redirect:/index.html";
Run Code Online (Sandbox Code Playgroud)
应该管用.如果您的视图位于应用程序的根目录中,Spring可以找到它.如果没有"/"的网址,例如您问题中的网址,则表示网址相对.它解释了为什么它以前工作,现在不工作.如果您的页面调用"重定向"偶然位于根目录中,则可以正常工作.如果没有,Spring无法找到视图,它不起作用.
这是Spring的RedirectView方法的源代码
protected void renderMergedOutputModel(
Map<String, Object> model, HttpServletRequest request, HttpServletResponse response)
throws IOException {
// Prepare target URL.
StringBuilder targetUrl = new StringBuilder();
if (this.contextRelative && getUrl().startsWith("/")) {
// Do not apply context path to relative URLs.
targetUrl.append(request.getContextPath());
}
targetUrl.append(getUrl());
// ...
sendRedirect(request, response, targetUrl.toString(), this.http10Compatible);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
115366 次 |
| 最近记录: |