Spring:@RequestMapping包含多个值

时间:2015-03-07 21:05:51

标签: java spring

我不知道这是正确的做法,但我现在可以提出最简单的解决方案。

我想在@RequestMapping中使用多个值,并在方法中执行业务逻辑,根据该方法将值称为方法。例如:

@RequestMapping(value = {"/delete", "/save"}, method = RequestMethod.POST)
public String crudOps(@ModelAttribute ("userForm") User user) {

   // find user in repository....

   if(value is delete)
      delete(user);
   else
      save(user);
}

如何使if语句有效?

3 个答案:

答案 0 :(得分:1)

您可以使用@PathVariale抓取部分网址,如下所示

@RequestMapping(value = /{action}, method = RequestMethod.POST)
 public String crudOps(@PathVariable String action, @ModelAttribute ("userForm") User user) {

       // find user in repository....

       if(action.equals("delete"))
          delete(user);
       else
          save(user);}

答案 1 :(得分:1)

在上面添加评论后,我通过访问HttpServletRequest getServletPath方法想到了一个不同的解决方案,

@RequestMapping(value = {"/delete", "/save"}, method = RequestMethod.POST)
public String crudOps(@ModelAttribute ("userForm") User user, HttpServletRequest request) {

   // find user in repository....

   if(request.getServletPath().equals("/delete"))
      delete(user);
   else
      save(user);
}

答案 2 :(得分:1)

我个人会继续进行以下操作,

@RequestMapping(value = "user/{userid}", method = RequestMethod.DELETE)

并使用

@RequestMapping(value = "/save", method = RequestMethod.POST)

用于创建用户。这有助于实现单一职责原则和更多模块化代码。让您的方法做一件事,做对了!

建议使用this link,将HttpMethod用于哪个目的。