问题描述
如题,各位大牛,小弟有一个 html页面的 form表单,内容为name, email, intro 三个元素使用 springmvc读取器内容@RequestMapping(value="/register/", method=RequestMethod.POST)public ModelAndView handleRegisterRequest(HttpServletRequest request, HttpServletResponse response, @ModelAttribute("tempUser") User tempUser) {}对于 User, 有class User { String name; String email;}对于使用了 ModelAttribute 的方法,可以很容易读取 form表单传递的 name 和 email, 并且生成一个相应的 User 实例,但是对于与 User无关的intro属性,却无法获取,请教各位大牛,这个应该怎么做?我试了下面方法,不行@RequestMapping(value="/register/intro/{intro}/", method=RequestMethod.POST)public ModelAndView handleRegisterRequest(HttpServletRequest request, HttpServletResponse response, @ModelAttribute("tempUser") User tempUser, @PathVariable String intro) { logger.debug(intro); // 打印的结果却是 {intro},说明没有传进该 controller}万分感谢! 问题补充:小弟想要实现的功能就是将 form中元素传进 controller,用 name, email生成相应 User实例,对L另一个无法映射的属性 intro 单独处理
解决方案
第一可以这样做@RequestMapping(value="/register/", method=RequestMethod.POST) public ModelAndView handleRegisterRequest(HttpServletRequest request, HttpServletResponse response, @ModelAttribute("tempUser") User tempUser,@RequestParam String intro) { } 第二@RequestMapping(value="/register/", method=RequestMethod.POST) public ModelAndView handleRegisterRequest(HttpServletRequest request, HttpServletResponse response, @ModelAttribute("tempUser") User tempUser) { String intro=request.getParameter("intro");}
解决方案二:
你的格式是:/register/intro/{intro}/那么请求时应该是/register/intro/123321/ 最后加/如果想不加 去掉后边的//register/intro/{intro}