如何在URL中保存传递的参数以便在Spring中的不同控制器中使用?

时间:2017-09-28 14:07:07

标签: java spring spring-boot

在一个页面中,我有一个DataTable。 单击用户时,用户ID将作为url值传递     usersInfo?的getId = 1

我有一个像这样的控制器:

@RequestMapping(value = "users/userInfo", method = RequestMethod.GET, params = {"getId"})
@ResponseBody
public ModelAndView getClientStat(@RequestParam(value="getId", required = true) String getId) {

    Authentication auth = SecurityContextHolder.getContext().getAuthentication();
    User user = userService.findUserByEmail(auth.getName());
     long clientId=0;
    clientId=Long.parseLong(getId);
    Client client=clientService.getClientById(clientId);
    ModelAndView modelAndView = new ModelAndView();
    modelAndView.addObject("userName", user.getName() + " " + user.getLastName());
    modelAndView.addObject("userId", user.getId());
    modelAndView.addObject("id", client.getName()+ " " + client.getLastName());
    modelAndView.setViewName("users/userInfo");
    return modelAndView;
}

然后我使用传递的对象id,它具有名称和姓氏以显示用户名。

然后在打开的users / userInfo页面上,我有一个按钮,它发送到另一个页面来填写表格。 问题是:如何将这些表单的字段保存到数据库中,但是对于我在控制器中具有id的客户端。

如何传递此值? 或者有更好的逻辑方法来做到这一点? 我在使用Spring时相当新,所以如果不清楚我会提前道歉,但我真的很感激一些指导。 谢谢

1 个答案:

答案 0 :(得分:0)

您可以将@PathVariable与addAttribute

一起使用
@RequestMapping(value = "users/edit/{userId}", method = RequestMethod.GET)
public ModelAndView getClientStat(@PathVariable(value="userId", required = true) String userId) {

    //Use the userId to find user information and pass
    modelAndView.addAttribute("id", userId)
    modelAndView.setViewName("users/edit");
    return modelAndView;
}

在您的视图中,您可以将userId添加为隐藏字段 <input type="hidden" name="userId" value={userId} />,取决于你使用百里香花或jsp

的观点