【笔记】使用Spring表单标签

来源:互联网 发布:清除localstorage数据 编辑:程序博客网 时间:2024/06/05 02:49

1.首先在jsp页面添加一行引用spring表单标签的声明

<!-- 引用spring标签声明 --><%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>

2.下面是一个使用<form:form>表单标签的实例, 它最终将生成1个HTML的form表单

<form:form modelAttribute="user" action="saveUser.html">用户名:<form:input path="userName" /><br><div id="userNameTip" style="width: 300px"></div>密码:<form:password path="password" /><br><div id="passwordTip" style="width: 300px"></div><input type="submit" id="regBtn" value="注册" onclick="return jQuery.formValidator.pageIsValid('1');" /><input type="reset" value="重置" /></form:form>

其实此时spring form标签只是帮我们简化了书写input id 和 name

客户看到的jsp页面, 通过F12查看元素, 则能看到真面目

<form id="user" action="saveUser.html" method="post">用户名:<input id="userName" name="userName" type="text" value=""><br><div id="userNameTip" style="width: 300px"></div>密码:<input id="password" name="password" type="password" value=""><br><div id="passwordTip" style="width: 300px"></div><input type="submit" id="regBtn" value="注册" onclick="return jQuery.formValidator.pageIsValid('1');"><input type="reset" value="重置"></form>
这个就是比较熟悉的表单格式了, 所以form标签只是做了一个翻译

3.Java后台Controller部分

@RequestMapping("/reg.html")public ModelAndView reg(HttpServletRequest request,User user) throws Exception {request.setAttribute("user", user);
return new ModelAndView("reg");}
注意: 此处必须有user对象存入request带回到reg.jsp页面, 否则会报500异常. 原因是在request中找不到名字是user的对象. 因为modelAttribute数据模型,指定了"user",

这里处理的user对象, 会被带到页面的表单中反显出来, 根据的是path属性, 对应的是user domain的属性, 如果path指定了user没有的属性, 也会报找不到user的某个属性错误.

其实和El表达式反显数据的道理一样, 也可以集联, 例如:  员工所属部门: <form:input path="dept.deptName"> 则取user domain中的dept属性的deptName的值

4.验证部分结合了formvalidtor, 用法和普通form是一样的

详见: formvalidtor使用总结


5.Spring表单的更多标签

更多内容的应用实例, 我转的一篇文章:


我补充的:

表单模型是实体类goods, 其中goods中有goodsType属性 而goodsType是一个对象, 这里select的用法

<form:form modelAttribute="goods" action="goods/saveGoods.html" method="post">

goodsItems是后台返回的List<GoodsType> 这样的一个集合 后台代码: request.setAttribute("goodsItems", list);

<form:select path="goodsType.goodsTypeId" class="form-control">  <form:options items="${goodsItems}" itemLabel="typeName" itemValue="goodsTypeId"/></form:select>
这样写, 传到后台, 就会把goodsTypeId赋值到goods对象的goodsType的goodsTypeId属性上, 但是如果还想传typeName的值到后台, 我的想法是写js方法实现, 不知道有没有更好的方法实现



0 0
原创粉丝点击