spring-mvc 如何把页面表单提交过来的值注入到对应的实体里面
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring-mvc 如何把页面表单提交过来的值注入到对应的实体里面相关的知识,希望对你有一定的参考价值。
如题,
/怎么把页面提交过来的Teacher姓名,注入到User 里面所关联的Teacher的name中
比如:
public class User
private String name;
private Teacher teacher;
public void setName(String name)
this.name=name
.........
.....
public class Teacher
private String name;
......
....
Action类
@RequestMapping("/action")
public class Action
@RequestMapping(param="method=add")
public String add(User user)
System.out.println(user.getTeacher().getName());
如果要传入直接让表单实体
我一开始以为和基本类型一样,所以这样写
login(@RequestParam("usr")Users usr, @RequestParam String txtSN,ModelMap modelMap, HttpServletRequest request,HttpServletResponse response)
后来发现不行,才知道这样就可以了:
login(Users usr, @RequestParam String txtSN,ModelMap modelMap, HttpServletRequest request,HttpServletResponse response)
去掉注释就页面不用改变
不用像struts2那样<input name="usr.username">
直接<input name="username">就好OK了 参考技术A 把提交form表单的name参数和实体pojo 的变量对应上 spring mvc 会自动将参数封装到实体类中追问
重点是,Teacher没实例化,会报错哦,怎么让spring实例化这个对象
追答你是想要把关联对象也封装到实体类中?你以为spring 是 hibernate呢?
追问比如,页面有个 这个的参数,怎么样把这个参数注入到Teacher,貌似网上有人说可以用MultiActionController和SimpleFormObject ,不过我不知道具体怎么用
追答那就将你的teacher 在 User实体中 实例化试一试 你可以看一看源码 我认为它在这种情形下 不会去实例化实体类中映射的类 页面应该为name='teacher.name'
我看了一下spring reference
Standard JavaBeans PropertyEditor instances are used to convert property values expressed as strings to the actual complex type of the property. CustomEditorConfigurer, a bean factory post-processor, may be used to conveniently add support for additional PropertyEditor instances to an ApplicationContext.
你需要扩展 PropertyEditor 那上边有个例子 你可以看看 你搜索这个5.4.2.1 Registering additional custom PropertyEditors
网上搜索的,都说的乱七八糟,- -,最好有一个例子给我吧,我只是想把页面的这样的一个teacher.name=xx 参数,提交后会注入到User实例对应的Teacher里面去。。。。,页面展示数据可以用EL表达式xx.xx对象导航拿数据,相反以种形式提交数据,要咋样呢?T_T................
参考技术B 这个问题,也是哥头疼的问题,各位大虾帮帮 啊
表单提交后数据库插入数据出现乱码怎么解决
① 首先把MySQL的服务停掉 在运行窗口输入:net stop mysql② 把服务器和客户端的字符集改成自己想用的字符集:GB2312或是utf8等……
具体操作为:打开mysql安装目录下的myini.tet;
找到default-character-set,将其改为自己想用的字符集:GB2312或是utf8等……,要注意的是这里有两个default-character-set,用ctrl+f定位在文件最前面输入default就会找到,都要改过来;
③ 重启MySQL服务器,在运行窗口输入:net start mysql
④ 最重要的是一点是,到这里我们已经能够解决乱码问题了,可问题是我们依然还会出现乱码问题,这是因为我们现在的表被创建的时候用的是默认的字符集(latin1),所以这时候我们要把表删除,然后重建就可以了 参考技术A 1.表单提交是不是用post方式;
2.有没有用ajax技术提交数据;
3.调教到action或servlet中,在插入到数据库前输出下,看看是否正常;
4.直接在数据库中插入你所提交的内容,看看是否正常;
以上是关于spring-mvc 如何把页面表单提交过来的值注入到对应的实体里面的主要内容,如果未能解决你的问题,请参考以下文章
如何在本页提交表单把提交的值显示在本页面上? 请高手把详细的讲解过程给我说一下。谢谢!