【笔记】使用Spring表单标签

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="注册" οnclick="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="注册" οnclick="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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值