怎重装系统统还有别的办法吗

SpringMVC中使用bean来接收form表单提交的参数时的注意点
作者:Rebuilding127
字体:[ ] 类型:转载 时间:
本篇文章主要介绍了SpringMVC中使用bean来接收form表单提交的参数时的注意点,具有很好的参考价值。下面跟着小编一起来看下吧
这是前辈们对于SpringMVC接收表单数据记录下来的总结经验:
SpringMVC接收页面表单参数
springmvc请求参数获取的几种方法
下面是我自己在使用时发现的,前辈们没有记录的细节和注意点:
使用bean来接收form表单提交的参数时,pojo中必须含有默认的(即空的)构造函数,同时,需要设置到bean中的变量必须有setter方法。
注:以下代码均为示例代码,非本人实际运行代码,请自行补充。
例如:我有一个bean类是User,具有变量username和password。同时,表单提交的内容为:
&form action="save-user-info" method="post"&
&span&帐号:&/span&&input type="text" name="username"&&br&
&span&密码:&/span&&input type="text" name="password"&&br&
&input type="submit" value="保存"&
那么,在User.java文件中必须具有
public User() {}
public void setUsername(String username) {
this.username =
public void setPassword(String password) {
this.password =
此时,我在Controller中才能成功接收到参数并生成对应的bean对象
@RequestMapping(value="/save-user-info")
public String saveUser(SsbiUser user) {
System.out.println(user.toString());
return "user-info";
通过一些测试,我把这个过程理解为,前台提交了一个包含User数据的form表单后,后台接受到参数后,首先会生成一个不包含任何参数的User对象,然后通过setter方法往这个空的对象这设置对应的值,最终得到我们需要的User对象。
而不是我一开始以为的,后台接受到参数以及直接调用对应的User(username, password)构造方法生成需要的对象。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具用 Spring MVC 来处理向导式复杂表单(4)
protected void validatePage(Object command, Errors errors, int page) {
Resume resume = (Resume)
ResumeValidator validator = (ResumeValidator)getValidator();
if(page == 1){//判断所在的页面来调用相应的验证方法
validator.validateName("name", errors);
对于另一个版本的 validatePage(Object command, Errors errors, int page, boolean finish) 方法,那就是:
Code ViewCopyPrint
protected void validatePage(Object command, Errors errors, int page,
boolean finish) {
Resume resume = (Resume)
ResumeValidator validator = (ResumeValidator)getValidator();
if(page == 1){//判断所在的页面来调用相应的验证方法
validator.validateName("name", errors);
if(finish){//如果是完成向导时,进行自己的验证,这里直接调用了标准的 validate() 方法
validator.validate(command,errors);
protected void validatePage(Object command, Errors errors, int page,
boolean finish) {
Resume resume = (Resume)
ResumeValidator validator = (ResumeValidator)getValidator();
if(page == 1){//判断所在的页面来调用相应的验证方法
validator.validateName("name", errors);
if(finish){//如果是完成向导时,进行自己的验证,这里直接调用了标准的 validate() 方法
validator.validate(command,errors);
九. 完整的工程代码
下载地址:http://www.blogjava.net/Files/Unmi/SpringWizardForm.rar
本工程未去处理有请求参数 _cancel 时,执行 ResumeWizardController.processCancel() 方法的情形,如果你有这样的需求的话可自己去完善。对 ResumeWizardController,也是只实现了 validatePage(Object command, Errors errors, int page) 这个版本的方法。
解压到 Tomcat 下即能运行,浏览 http://localhost:8080/SpringWizardForm 点链接进到向导。包含源代码和所需的 jar 文件。使用的是 Spring 2.0,jsp 页面中用 spring-form 标签。支持国际化,从资历源文件中获取验证错误信息在输入框下方显示。
十. 运行效果
把整个操作过程做成了一个 Gif 动画来展示,能使你一目了然。只恐怕这精彩的部分放在后头,可能鲜有人有此等耐心把滚动条拉至此处。
1. 浏览 http://localhost:8080/SpringWizardForm,点链接进到向导页
2. 操作中测试到了每一个验证的效果,期望工作地点、姓名和手机号码不能为空
3. 验证不通过时,从资源文件中取出错误信息,显示在相应输入框之下。并且页面仍留在当前页
4. 在向导的进行中,点“上一步”,“下一步”按钮时,只要填写提交过的数据一直保留
5. 所有数据填完后,点击“完成”按钮,业务类处理整个表单数据(后台会打印出 resume 信息),页面显示恭喜.
相关报道:
新闻热线:010-
责任编辑:
名企动态: |
标志着Windows迈出个性化计算的第一步……
本站特聘法律顾问:于国富律师
Copyright (C) 1997-springMVC复杂页面提交 list
我的图书馆
springMVC复杂页面提交 list
ajax表单提交$.ajax({& & & & & & & & cache: true,& & & & & & & & type: "POST",& & & & & & & & url:ajaxCallUrl,& & & & & & & & data:$('#yourformid').serialize(),// 你的formid& & & & & & & & async: false,& & & & & & & & error: function(request) {& & & & & & & & & & alert("Connection error");& & & & & & & & },& & & & & & & & success: function(data) {& & & & & & & & & & $("#commonLayout_appcreshi").parent().html(data);& & & & & & & & }& & & & & & });表单中用 字段对应的是 &name 不是id普通提交表单:直接在form表单中加个id,&form id="formId"&&/form&,弄个buttom按钮进行提交,加个onclick="js函数",然后在js函数中$("#formId").submit(); 就OK. 概述实现方法及测试[一]、概述继前面一篇&&,本文主要介绍如果实现复杂类型对象的数据绑定,比如前文中的父级对象CourseInfo 中增加:String[] times , List&Student& studentList&这两个复杂类型属性,页面中数据如何才能准确绑定到对象上呢?[二]、实现方法及测试CourseInfo.java 修改成如下:1package&com.micmiu.demo.web.v2.demo.2&3import&java.util.L4&5import&mons.lang3.builder.ToStringB6&7import&com.micmiu.demo.web.v2.demo.entity.C8import&com.micmiu.demo.web.v2.demo.entity.S9import&com.micmiu.demo.web.v2.demo.entity.T10&11/**12&* 课程信息(view层)13&*14&* @author &a href=""&Michael Sun&/a&15&*/16public&class&CourseInfo {17&18&&&&19&&&&private&C20&21&&&&22&&&&private&T23&24&&&&25&&&&private&String[]26&27&&&&28&&&&private&List&Student& studentL29&30&&&&public&Course getCourse() {31&&&&&&&&return&32&&&&}33&34&&&&public&Teacher getTeacher() {35&&&&&&&&return&36&&&&}37&38&&&&public&void&setCourse(Course course) {39&&&&&&&&this.course =40&&&&}41&42&&&&public&void&setTeacher(Teacher teacher) {43&&&&&&&&this.teacher =44&&&&}45&46&&&&public&String[] getTimes() {47&&&&&&&&return&48&&&&}49&50&&&&public&List&Student& getStudentList() {51&&&&&&&&return&studentL52&&&&}53&54&&&&public&void&setTimes(String[] times) {55&&&&&&&&this.times =56&&&&}57&58&&&&public&void&setStudentList(List&Student& studentList) {59&&&&&&&&this.studentList = studentL60&&&&}61&62&&&&@Override63&&&&public&String toString() {64&&&&&&&&return&ToStringBuilder.reflectionToString(this);65&&&&}66}Student.java :1package&com.micmiu.demo.web.v2.demo.2&3import&javax.persistence.C4import&javax.persistence.E5import&javax.persistence.T6&7import&mons.lang3.builder.ToStringB8&9import&com.micmiu.demo.web.v2.base.entity.IdE10&11/**12&* 学生信息13&*14&* @author &a href=""&Michael Sun&/a&15&*/16@Entity17@Table(name =&"T_DEMO_STUDENT")18public&class&Student&extends&IdEntity {19&20&&&&@Column(name =&"NAME")21&&&&private&S22&23&&&&@Column(name =&"EMAIL")24&&&&private&S25&26&&&&@Column(name =&"CLASS_NAME")27&&&&private&String classN28&29&&&&public&String getName() {30&&&&&&&&return&31&&&&}32&33&&&&public&String getEmail() {34&&&&&&&&return&35&&&&}36&37&&&&public&String getClassName() {38&&&&&&&&return&classN39&&&&}40&41&&&&public&void&setName(String name) {42&&&&&&&&this.name =43&&&&}44&45&&&&public&void&setEmail(String email) {46&&&&&&&&this.email =47&&&&}48&49&&&&public&void&setClassName(String className) {50&&&&&&&&this.className = classN51&&&&}52&53&&&&@Override54&&&&public&String toString() {55&&&&&&&&return&ToStringBuilder.reflectionToString(this);56&&&&}57}view 层页面修改成如下:1&form:form&id="input-form"&modelAttribute="courseInfo"2&&&&action="${ctx}/demo/course.do?method=save"&method="post"&3&&&&&input&type="hidden"&name="id"&value="${course.id}"&/&4&&&&&fieldset&class="prepend-top"&5&&&&&&&&&legend&课程信息&/legend&6&&&&&&&&&div&id="messageBox"&class="error-msg"&style="display: none"&输入有误,请先更正。&/div&7&&&&&&&&&div&8&&&&&&&&&&&&&label&for="course.name"&class="field"&课程名称:&/label& &input9&&&&&&&&&&&&&&&&type="text"&id="course.name"&name="course.name"&size="20"10&&&&&&&&&&&&&&&&value="${courseInfo.course.name}"&class="required"&/&11&&&&&&&&&/div&12&&&&&&&&&div&13&&&&&&&&&&&&&label&for="course.description"&class="field"&课程介绍:&/label& &input14&&&&&&&&&&&&&&&&type="text"&id="course.description"&name="course.description"15&&&&&&&&&&&&&&&&size="20"&value="${courseInfo.course.description}"class="required"&/&16&&&&&&&&&/div&17&18&&&&&&&&&div&19&&&&&&&&&&&&&label&for="teacher.name"&class="field"&老师姓名:&/label& &input20&&&&&&&&&&&&&&&&type="text"&id="teacher.name"&name="teacher.name"&size="20"21&&&&&&&&&&&&&&&&value="${courseInfo.teacher.name}"&class="required"&/&22&&&&&&&&&/div&23&&&&&&&&&div&24&&&&&&&&&&&&&label&for="teacher.email"&class="field"&老师Email:&/label& &input25&&&&&&&&&&&&&&&&type="text"&id="teacher.email"&name="teacher.email"&size="20"26&&&&&&&&&&&&&&&&value="${courseInfo.teacher.email}"&class="required"&/&27&&&&&&&&&/div&28&&&&&&&&&div&29&&&&&&&&&&&&&label&for="times"&class="field"&上课时间:&/label& &inputtype="text"30&&&&&&&&&&&&&&&&id="times[0]"&name="times"&size="20"&value="周一"class="required"&/&31&&&&&&&&&&&&&input&type="text"&id="times[1]"&name="times"&size="20"&value="周三"32&&&&&&&&&&&&&&&&class="required"&/& &input&type="text"&id="times[2]"name="times"33&&&&&&&&&&&&&&&&size="20"&value="周五"&class="required"&/&34&&&&&&&&&/div&35&36&&&&&&&&&div&37&&&&&&&&&&&&&label&for="studentList[0].name"&class="field"&学生1姓名:&/label& &input38&&&&&&&&&&&&&&&&type="text"&id="studentList[0].name"&name="studentList[0].name"size="20"39&&&&&&&&&&&&&&&&value="学生1姓名"&class="required"&/&40&&&&&&&&&/div&41&&&&&&&&&div&42&&&&&&&&&&&&&label&for="studentList[0].email"&class="field"&学生1Email:&/label& &input43&&&&&&&&&&&&&&&&type="text"&id="studentList[0].email"name="studentList[0].email"&size="20"44&&&&&&&&&&&&&&&&value="学生1Email"&class="required"&/&45&&&&&&&&&/div&46&&&&&&&&&&&&&div&47&&&&&&&&&&&&&label&for="studentList[1].name"&class="field"&学生2姓名:&/label& &input48&&&&&&&&&&&&&&&&type="text"&id="studentList[1].name"&name="studentList[1].name"size="20"49&&&&&&&&&&&&&&&&value="学生2姓名"&class="required"&/&50&&&&&&&&&/div&51&&&&&&&&&div&52&&&&&&&&&&&&&label&for="studentList[1].email"&class="field"&学生2Email:&/label& &input53&&&&&&&&&&&&&&&&type="text"&id="studentList[0].email"name="studentList[1].email"&size="20"54&&&&&&&&&&&&&&&&value="学生2Email"&class="required"&/&55&&&&&&&&&/div&56&&&&&/fieldset&注意:复杂对象在页面元素中各属性的定义规则。controller 对应的 CourseAction.java &实现修改成如下:1@RequestMapping(params = {&"method=save"&})2@ResponseBody3public&String save(Model model, ModelAndView mv, CourseInfo courseInfo,4&&&&&&&&RedirectAttributes redirectAttributes) {5&&&&System.out.println("course && "&+ courseInfo.getCourse());6&&&&System.out.println("teacher && "&+ courseInfo.getTeacher());7&8&&&&for&(String time : courseInfo.getTimes()) {9&&&&&&&&System.out.println("time && "&+ time);10&&&&}11&&&&for&(Student student : courseInfo.getStudentList()) {12&&&&&&&&System.out.println("student && "&+ student);13&&&&}14&15&&&&System.out.println("courseInfo && "&+ courseInfo);16&&&&String message =&"save";17&&&&redirectAttributes.addFlashAttribute("message", message);18&&&&return&19}controller中的部分方法省略,这里主要测试下页面数据绑定的结果,测试过程如下:表单输入内容如下图:提交后,控制台输出日志如下:course && com.micmiu.demo.web.v2.demo.entity.Course@e11326[name=课程名称,description=课程介绍,id=&null&]
teacher && com.micmiu.demo.web.v2.demo.entity.Teacher@b03bd5[name=老师姓名,email=老师Email,grade=&null&,id=&null&]
time && 周一
time && 周三
time && 周五
student && com.micmiu.demo.web.v2.demo.entity.Student@13cd6aa[name=学生1姓名,email=学生1Email,className=&null&,id=&null&]
student && com.micmiu.demo.web.v2.demo.entity.Student@13137a2[name=学生2姓名,email=学生2Email,className=&null&,id=&null&]
courseInfo && com.micmiu.demo.web.v2.demo.vo.CourseInfo@ce4be6[course=com.micmiu.demo.web.v2.demo.entity.Course@e11326[name=课程名称,description=课程介绍,id=&null&],teacher=com.micmiu.demo.web.v2.demo.entity.Teacher@b03bd5[name=老师姓名,email=老师Email,grade=&null&,id=&null&],times={周一,周三,周五},studentList=[com.micmiu.demo.web.v2.demo.entity.Student@13cd6aa[name=学生1姓名,email=学生1Email,className=&null&,id=&null&], com.micmiu.demo.web.v2.demo.entity.Student@13137a2[name=学生2姓名,email=学生2Email,className=&null&,id=&null&]]]从日志中可以看出:不管是string数组对象times 还是复杂列表对象 studentList,数据绑定准确无误。
TA的最新馆藏[转]&[转]&[转]&Spring MVC 的请求参数获取的几种方法 -
- ITeye技术网站
博客分类:
通过@PathVariabl注解获取路径中传递参数
JAVA
1&&&& @RequestMapping(value = "/{id}/{str}")
2&&&& public ModelAndView helloWorld(@PathVariable String id,
3&&&&&&&&&&&& @PathVariable String str) {
4&&&&&&&& System.out.println(id);
5&&&&&&&& System.out.println(str);
6&&&&&&&& return new ModelAndView("/helloWorld");
7&&&& }
用@ModelAttribute注解获取POST请求的FORM表单数据
JSP
1 &form method="post" action="hao.do"&
2 a: &input id="a" type="text"&& name="a"/&
3 b: &input id="b" type="text"&& name="b"/&
4 &input type="submit" value="Submit" /&
5 &/form&
JAVA pojo
1 public class Pojo{
2&&&& private S
3&&&&
4&&&&
JAVA controller
1 @RequestMapping(method = RequestMethod.POST)
2&&&& public String processSubmit(@ModelAttribute("pojo") Pojo pojo) {
4&&&&&&&& return "helloWorld";
5&&&& }
直接用HttpServletRequest获取
JAVA
1&&&& @RequestMapping(method = RequestMethod.GET)
2&&&& public String get(HttpServletRequest request, HttpServletResponse response) {
4&&&&&&&& System.out.println(request.getParameter("a"));
5&&&&&&&& return "helloWorld";
6&&&& }
用注解@RequestParam绑定请求参数a到变量a
当请求参数a不存在时会有异常发生,可以通过设置属性required=false解决,
例如: @RequestParam(value="a", required=false)
JAVA
1&&&& @RequestMapping(value = "/requestParam", method = RequestMethod.GET)
2&&&& public String setupForm(@RequestParam("a") String a, ModelMap model) {
3&&&&&&&& System.out.println(a);
4&&&&&&&& return "helloWorld";}
浏览 38005
强大。。。。
BabyDuncan
浏览: 348838 次
来自: 北京
好文章,顶顶
hugh.wang 写道请问你这个能还原吗?短网址用的是HAS ...
没有注释,看的费劲
好帖子竟然没人顶...
不好,你这只是记录式的博客,不是分享式的博客,对浏览着不友好. ...

我要回帖

更多关于 小白一键重装系统 的文章

 

随机推荐