日期:2014-05-18  浏览次数:20899 次

问个关于SpringMVC+SpringJDBC+Velocity保存实体的问题,谢谢。
问个关于SpringMVC+SpringJDBC+Velocity保存实体的问题,谢谢。

Spring+SpringMVC+SpringJDBC+Velocity
项目用的久是上面的框架,

实体类如下:


User:
private String userName;
private String userDesc;
private Double chengDa;
private Date    createTime;


页面使用Velocity 

我UserService里面有个借口 public void addUser(User user);
然后实现类,采用JDBC,sql语句是insert into ...

请问下,如何在Controller里面获取velocity的User user对象呢,


@Autowired
private UserService userService
@RequestMapping("addUser")
public void addUser(HttpServletRequest request,HttpServletResponse response,ModelMap modelMap) throws IOException, SolrServerException {
          userService.addUser(user);
}


因为我要用对象来保存,谢谢。最好有代码,谢谢。


------解决方案--------------------
你可以定义了页面到Controller的TO对象,这个例子中你可以直接使用User实体。重点是你页面到控制器时传递的参数名称和User对象的属性名称完全一致,比如页面上一个表单,则里面的input域的name属性是userName,则这个input的值就会直接赋值给User对象userName属性,当然控制器里面的方法public void addUser(HttpServletRequest request,HttpServletResponse response,ModelMap modelMap)需要加上一个参数,变成public void addUser(HttpServletRequest request,HttpServletResponse response,ModelMap modelMap, User user).另外友情提示下,控制器里面的方法,除非您要操作session,否者很少用到request和response两个参数。
不知道说清楚了没有,没清楚欢迎拍砖
------解决方案--------------------
引用:
Quote: 引用:

你可以定义了页面到Controller的TO对象,这个例子中你可以直接使用User实体。重点是你页面到控制器时传递的参数名称和User对象的属性名称完全一致,比如页面上一个表单,则里面的input域的name属性是userName,则这个input的值就会直接赋值给User对象userName属性,当然控制器里面的方法public void addUser(HttpServletRequest request,HttpServletResponse response,ModelMap modelMap)需要加上一个参数,变成public void addUser(HttpServletRequest request,HttpServletResponse response,ModelMap modelMap, User user).另外友情提示下,控制器里面的方法,除非您要操作session,否者很少用到request和response两个参数。
不知道说清楚了没有,没清楚欢迎拍砖




哦 也就是说,我只要把vm页面的input域的name 设置成跟User实体里面的字段一样的,
然后这样,
public void addUser(HttpServletRequest request,HttpServletResponse response,ModelMap modelMap, User user)
我直接在Controller里面就可以取到User user 对象了是吧,谢谢。


yes,看来还是表达清楚的。呵呵
另外如果只有一两个参数,不需要通过对象来接受参数值,可以直接使用name属性值来接受。比如<input name='userName' value='nnnn'/>,在控制器方法中添加一个 String userName 参数即可。