这些参数如何在@RequestMapping中使用

时间:2014-11-17 16:39:53

标签: spring spring-mvc

我继承了我想要弄清楚的代码。

我有一个Controller类,用于使用以下方法注册用户

@RequestMapping(method = POST, params = {USERNAME_PARAM, "!" + EMAIL_PARAM})

public ModelAndView usernameRegister(@Valid RegisterWithUsernameParameter usernameParameter, ModelMap model) 


Where USERNAME_PARAM = "username" and EMAIL_PARAM = "email". I also have this method:

@RequestMapping(method = POST, params = {EMAIL_PARAM, "!" + USERNAME_PARAM})

public ModelAndView emailRegister(@Valid AuthenticateWithEmailParameter emailParameter, ModelMap model)

我的问题是,“params =”的目的是什么?我已经删除并测试了,我看不出任何差异,它仍然有效。还有什么“!”在这种情况下意味着什么?

谢谢!

2 个答案:

答案 0 :(得分:1)

params = {}属性指定调用特定方法的其他条件。

仅当USERNAME_PARAM存在且请求中不存在EMAIL_PARAM时,才会调用usernameRegister()方法。

只有在存在EMAIL_PARAM并且请求中不存在USERNAME_PARAM时,才会调用

emailRegister()方法。

一些有用的链接: Javadoc for paramsExample using params attribute

答案 1 :(得分:0)

使用'params'我们可以缩小请求范围。和'!'否定表达。因此,第一个方法(userNameRegister)正在寻找带有USERNAME_PARAM而不是EMAIL_PARAM的reuqets,而第二个方法(emailRegister)正在查找EMAIL_PARAM而不是USERNAME_PARAM