Spring 提供的 JSP 标签库

1 表单绑定标签库

  • 可以绑定一个模型的对象到注册表单,表单中的某些标签可以通过这个模型对象的属性进行填充。
  • 提供一个展现错误的标签

使用声明

1
2
<%-- tags/form, 并且声明前缀为 sf,即 Spring Form--%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="sf" %>

具体的 JSP 表单

1
2
3
4
5
<sf:form method="POST" commandName="user">
First Name: <sf:input path="firstName" /><br/>
......
Password: <sf:password path="password" /><br/>
</sf:form>

sf:form 标签会渲染一个 HTML <form> 标签, 通过 commandName 绑定模型中的一个对象,key 为 user, 这个对象的属性会被其他标签引用

<sf:input> 标签会渲染一个 HTML <input> 标签 ,type 为 text,path 的值,会被渲染成该 <input> 标签的 value 属性的值

当然也可以在 <sf:input> 标签中指定 type 属性

1
Email: <sf:input path="email" type="email" /><br/>

控制器方法 — 注册 GET 方法, 模型中必须添加一个 User 对象

1
2
3
4
5
@RequestMapping(value = "/register", method = RequestMethod.GET)
public String showRegistration(Model model) {
model.addAttribute(new User());
return "registerFormSpringForm";
}

在校验失败后,表单中会预先填充之前输入的值。是在 POST 方法,是直接返回的注册视图实现的, GET 方法中添加 User 对象,只是为了初始展示注册试图 JSP不报错

展现错误

如果存在校验错误的话,请求中会包含错误的详细信息,这些信息是与模型数据放到一起的。我们所需要做的就是到模型中将这些数据抽取出来,并展现给用户。

1
2
3
<%-- path 属性指定要显示模型对象属性 firstName 的错误信息 --%>
<%-- cssClass 属性设置了 css 属性,将错误显示更加突出 --%>
<sf:errors path="firstName" cssClass="error" />

如果有验证错误的话, 会渲染成一个个HTML <span>标签,显示错误信息。

为每个输入域设置cssErrorClass属性,着重显示需要修正的输入域,

1
2
<sf:label path="firstName" cssErrorClass="labelerror">FirstName:</sf:label>
<sf:input path="firstName" cssErrorClass="inputerror"/>

现在已经为文本标记和输入域设置了样式,在有校验错误的时候, HTML 最终的 <label> <input> 标签的 class 属性会被设置成相应的值,展示 CSS 样式

2 Spring 通用 JSP 标签库

使用声明

1
2
<%-- tags, 并且声明前缀为 s,即 Spring--%>
<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>

3 JSTL

JSTL 依赖

https://www.cnblogs.com/kouzikaile/p/7094571.html

https://blog.csdn.net/qq_22860341/article/details/79207665

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
     <!-- jstl -->
<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- jstl-api -->
<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>jstl-api</artifactId>
<version>1.2</version>
</dependency>
<!-- jstl-impl -->
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>jstl-impl</artifactId>
<version>1.2</version>
</dependency>

4 Apache Tiles

1
2
3
4
5
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-extras</artifactId>
<version>3.0.7</version>
</dependency>

==使用Apache Tiles 需要添加以上依赖及JSTL依赖==

如果提示包找不到,可能需要将相应的依赖从右边一刀左边的的lib目录下(Put into Output Root)

观察制品输出目录 Output directory 是否存在相应的包