2014-07-05 97 views
1

我刚刚查看了Spring MVC框架,所以我对它很陌生,请原谅基本问题。但我想弄清楚视图解析器是如何工作的。Spring MVC基本视图分辨率

我创建了一个基本的控制器方法来添加用户是这样的:

@RequestMapping(value = "/add", method = RequestMethod.POST) 
    public String addUser(@ModelAttribute("user") User user, BindingResult result) { 
     logger.entry(user, result); 
     userRepository.save(user); 

     String returnString="redirect:members/confirmation"; 
     logger.exit(returnString); 
     return returnString; 
    } 

我希望它重定向到成员/ confirmation.jsp页的WEB-INF /页文件夹下。这只是一个简单的JSP,表示“感谢注册”。重定向是这样,它不会允许表单双张贴。 (这只是一个基本的测试应用程序)

我的MVC-调度 - servlet.xml中的配置文件中配置的internalviewresolver:

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="prefix" value="/WEB-INF/pages/"/> 
     <property name="suffix" value=".jsp"/> 
     <property name="order" value="0"/> 
    </bean> 

但它不解决,以确认视图,只是404的。

我在这里错过了什么?

谢谢!

+0

此外,如果我拿出重定向前缀,它工作正常。 –

+0

你在重定向和转发。重定向意味着向浏览器发送响应,要求它将请求发送回另一个位置。你想要的是一个前锋。不要使用重定向:前缀。 –

+0

重定向是阻止重复表单提交问题的推荐方法吗? http://stackoverflow.com/questions/2324931/duplicate-form-submission-in-spring –

回答

2

返回"redirect:members/confirmation"做一个客户端重定向到members/confirmation(此相对URL)。您的应用程序目前不响应对members/confirmation的HTTP请求。使用目标JSP页面作为视图为此URI创建控制器:

@RequestMapping(value = "/members/confirmation", method = RequestMethod.GET) 
public String confirmation() { 

    return "members/confirmation"; 
} 

这是执行此操作的唯一正确方法。