S
S
Spring 实战(第五版)
搜索文档…
S
S
Spring 实战(第五版)
Spring 实战(第 5 版)
第一部分 Spring 基础
第 1 章 Spring 入门
第 2 章 开发 Web 应用程序
2.1 展示信息
2.2 处理表单提交
2.3 验证表单输入
2.3.1 声明验证规则
2.3.2 在表单绑定时执行验证
2.3.3 显示验证错误
2.4 使用视图控制器
2.5 选择视图模板库
2.6 小结
第 3 章 处理数据
第 4 章 Spring 安全
第 5 章 使用配置属性
第二部分 集成 Spring
第 6 章 创建 REST 服务
第 7 章 调用 REST 服务
第 8 章 发送异步消息
第 9 章 集成 Spring
第三部分 响应式 Spring
第 10 章 Reactor 介绍
第 11 章 开发响应式 API
第 12 章 响应式持久化数据
第四部分 云原生 Spring
第 13 章 服务发现
第 14 章 配置管理
第 15 章 处理失败和时延
第五部分 部署Spring
第 16 章 使用 SpringBoot Actuator
第 17 章 管理 Spring
第 18 章 使用 JMX 监控 Spring
第 19 章 部署 Spring
由
GitBook
提供支持
2.3.2 在表单绑定时执行验证
既然已经声明了应该如何验证 Taco 和 Order,那么我们需要重新访问每个控制器,并指定应该在将表单提交到各自的处理程序方法时执行验证。
要验证提交的 Taco,需要将 Java Bean Validation API 的 @Valid 注释添加到 DesignTacoController 的 processDesign() 方法的 Taco 参数中。
程序清单 2.12 验证 POST 来的 Taco
@PostMapping
public
String
processDesign
(
@Valid
Taco
design
,
Errors
errors
)
{
if
(
errors
.
hasErrors
())
{
return
"design"
;
}
// Save the taco design...
// We'll do this in chapter 3
log
.
info
(
"Processing design: "
+
design
);
return
"redirect:/orders/current"
;
}
@Valid 注释告诉 Spring MVC 在提交的 Taco 对象绑定到提交的表单数据之后,以及调用 processDesign() 方法之前,对提交的 Taco 对象执行验证。如果存在任何验证错误,这些错误的详细信息将在传递到 processDesign() 的错误对象中捕获。processDesign() 的前几行查询 Errors 对象,询问它的 hasErrors() 方法是否存在任何验证错误。如果有,该方法结束时不处理 Taco,并返回 “design” 视图名,以便重新显示表单。
要对提交的 Order 对象执行验证,还需要对 OrderController 的 processOrder() 方法进行类似的更改。
程序清单 2.13 验证 POST 来的 Order
@PostMapping
public
String
processOrder
(
@Valid
Order
order
,
Errors
errors
)
{
if
(
errors
.
hasErrors
())
{
return
"orderForm"
;
}
log
.
info
(
"Order submitted: "
+
order
);
return
"redirect:/"
;
}
在这两种情况下,如果没有验证错误,则允许该方法处理提交的数据。如果存在验证错误,则请求将被转发到表单视图,以便用户有机会纠正其错误。
但是用户如何知道哪些错误需要改正呢?除非调出表单上的错误,否则用户将只能猜测如何成功提交表单。
以前
2.3.1 声明验证规则
下一个
2.3.3 显示验证错误
最近更新
2yr ago
复制链接