您好我是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 "";
}
任何人帮助我。
答案 0 :(得分:7)
您永远不必将业务逻辑放入控制器,并且与数据库相关的业务逻辑较少,事务类/方法应该在服务层中。但是,如果您需要重定向到另一个控制器方法,请使用重定向
@RequestMapping(value="/updatePSWD")
@ResponseBody
public String updatePswd()
{
return "redirect:/getUser.do";
}
答案 1 :(得分:2)
可以这样做:
@Autowired
private MyOtherController otherController;
@RequestMapping(value = "/...", method = ...)
@ResponseBody
public String post(@PathVariable String userId, HttpServletRequest request) {
return otherController.post(userId, request);
}
答案 2 :(得分:0)
控制器类与任何其他类一样是Java类。尽管Spring为您提供了聪明的魔力,但使用反射来检查注释,您的代码可以像普通的Java代码一样调用方法:
public String updatePasswd()
{
User u = getUser();
// manipulate u here
return u;
}
答案 3 :(得分: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";
}
}
答案 4 :(得分:-1)
您应该将方法getUser放在服务中(例如UserService类)。
在getUser控制器中,您在服务中调用方法getUser以获取用户
同样,在updatePswd控制器中,您也在服务中调用方法getUser