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());


2.5我不知道,现在3.0可以的,基本类型的是这样的@RequestParam String txtSN
如果要传入直接让表单实体
我一开始以为和基本类型一样,所以这样写
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 如何把页面表单提交过来的值注入到对应的实体里面的主要内容,如果未能解决你的问题,请参考以下文章

如何在本页提交表单把提交的值显示在本页面上? 请高手把详细的讲解过程给我说一下。谢谢!

在goahead中如何实现在一个页面提交表单数据,在另一个页面获取表单提交过来的数据

HTML如何接收从另一个页面form表单提交过来的数据

为啥django不处理PUT方法带过来的表单

php函数里面怎么获取post过来的值

PHP表单提交失败,如何返回原值?