关于Spring MVC中的表单标签库的使用
普通的MVC设计模式中M代表模型层,V代表视图层,C代表控制器,SpringMVC是一个典型的MVC设置模式的框架,对于视图和控制器的优化很多,其中就有与控制器相结合的JSP的表单标签库。
我们先简单写一个JSP的文件,使用普通的HTML的表单:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="action" method="post">
username:<input type="text" name="username"/>
password:<input type="password" name="password"/>
<input type="submit" value="GO"/>
</form>
</body>
</html>
这样显示效果是这样的:
username: password:
在实际使用的时候,Spring会提供一个表单标签库来渲染表单,这样可以直接将标签绑定到对象中,现在加入我有一个模型层
User.java
public User{
String password;
String username;
//此处代码略去
...
}
如果我们使用表单标签库的标签来渲染,可以直接将标签绑定到User对象的password或者username。
在使用表单标签库的时候要先声明:
<%@taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
然而表单标签在不进行数据绑定是无法操作的,在运行程序的时候会报错,因为表单标签是依赖于数据绑定操作的。
我们在控制器中首先需要在这里新建一个User的引用,也就是说要有一个User对象才能使User对象的password和username绑定到input标签,所以在Controller中我们应该先做以下操作:
@RequestMapping(value="/action")//这里action的地址
public String InputName(Model model){
logger.info("Inputname called");
model.addAttribute("user", new User());//这里给视图层提供了数据的对象,用来数据绑定
return "JSPFile";//返回的是视图的文件名
}
接下来我们可以使用表单标签库了:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form:form commandName="user" action="action" method="post">
username:<form:input path="username"/><!-- input type="text" name="username"/><br/><br/-->
password:<form:password path="password"/><!-- input type="password" name="password"/-->
<input type="submit" value="GO"/>
</form:form>
</body>
</html>
注意这里使用的表单标签库的标签,commandName属性是最重要的属性,定义了模型属性的名称,我们之前的控制器中的
model.addAttribute("user", new User());
传过来的是user,所以我们使用的user,之后的表单返回的就是这个模型的属性。
然后input标签中的path属性:
commandName中的属性值为user,而且path的属性为username,那么username的input标签被绑定到了user的username属性中。
要值得注意的一点是,我们在使用表单标签库的时候直接使用而没有进行数据绑定是无法使用的。
=========================================
最新文章
- PHP实现快速排序、插入排序、选择排序
- 学习zepto.js(原型方法)[1]
- passing ‘const ’ as ‘this’ argument of ‘’ discards qualifiers 错误处理
- MATLAB 图像处理——Contrast Enhancement Techniques
- “CoreCLR is now Open Source”阅读笔记
- 微信新版支持读取iPhone M7/M8协处理器运动数据 与好友PK一下运动量吧
- Hadoop c++开发
- 多设备同时安装apk问题(安卓)
- TopCoder 603 div1 &; div2
- 64位CentOS安装32位开发环境编译Nachos
- C语言基础学习学习前的准备-1
- 关于Android的一些理解
- UVA - 11732 ";strcmp()"; Anyone?左兄弟右儿子trie
- Quick Cocos2dx 场景对象基类实现
- Angular4 组件通讯方法大全
- 下载安装ActiveMQ(消息队列)
- 关系型数据库工作原理-时间复杂度(翻译自Coding-Geek文章)
- Android中PropertyAnimation属性动画详解(一)
- PS中如何提高修改psd图片的效率(自动选择工具)
- 项目中使用的artTemplate笔记