在Spring MVC中如何调用一个控制器到另一个控制器的URL?

9

你好,我是新手Spring MVC开发者,我想从一个控制器调用另一个控制器的方法,该怎么做?请看下面我的代码:

@Controller

    @RequestMapping(value="/getUser")
    @ResponseBody
    public User getUser()
    {
        User u = new User();
        //Here my dao method is activated and I wil get some userobject
       return u;
    }
   @Controller

    @RequestMapping(value="/updatePSWD")
    @ResponseBody
    public String updatePswd()
    {
        here I want to call above controller method and 
       I want to update that user password here.
       how can  I do that 
        return "";
    }

any one help me .


2
不应该调用另一个控制器方法,而是将逻辑移动到服务类中。 - Jaiwo99
5个回答

15

可以这样做:

@Autowired
private MyOtherController otherController;

@RequestMapping(value = "/...", method = ...)
@ResponseBody
public String post(@PathVariable String userId, HttpServletRequest request) {
    return otherController.post(userId, request);
}

10

您永远不必将业务逻辑放入控制器中,而且与数据库相关的业务逻辑也越少越好,事务类/方法应该在服务层中。但如果您需要重定向到另一个控制器方法,请使用重定向

@RequestMapping(value="/updatePSWD")
@ResponseBody
public String updatePswd()
{
  return "redirect:/getUser.do";
}

1
如果getUser(String destURL)方法需要参数,该如何调用? - surendrapanday

1

控制器类是一个像其他Java类一样的类。虽然Spring可以为您执行巧妙的魔法,使用反射来检查注释,但您的代码可以像普通的Java代码一样调用方法:

 public String updatePasswd()
 {
    User u = getUser();
    // manipulate u here
    return u;
 }

0

这里不需要添加@reponseBody注释,因为你正在重定向到另一个控制器。 你的代码将如下所示:

@Controller
class ControlloerClass{

        @RequestMapping(value="/getUser",method = RequestMethod.GET)
        @ResponseBody
        public User getUser(){
            User u = new User();
            //Here my dao method is activated and I wil get some userobject
            return u;
        }

        @RequestMapping(value="/updatePSWD",method = RequestMethod.GET)
        public String updatePswd(){
           //update your user password
           return "redirect:/getUser";
        }

}

0

你应该将方法getUser放在一个服务中(例如UserService类)。

在getUser控制器中,你调用服务中的getUser方法来获取用户。

同样,在updatePswd控制器中,你也要调用服务中的getUser方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接