struts2官方 中文教程 系列六:表单验证
先贴个本帖的地址,以免被爬:struts2教程 官方系列六:表单验证 即 http://www.cnblogs.com/linghaoxinpian/p/6906720.html
介绍
在本教程中,我们将探索使用Struts2来验证用户在表单上的输入。有两种方法可以来进行表单验证。本教程将介绍更基本的方法,在Struts2 Action类中包含验证。
为了使Struts2 Action类在Struts2 表单中验证用户的输入,您必须在Action类中定义一个validate方法。假设我们有这些业务规则:
1.用户必须提供第一个名称用户
2.必须提供一个电子邮件地址用户
3.未到18岁不能注册
添加如下代码到/src/action/RegisterAction.java中
validate method
public void validate(){
if (personBean.getFirstName().length() == 0) {
addFieldError("personBean.firstName", "First name is required.");
}
if (personBean.getEmail().length() == 0) {
addFieldError("personBean.email", "Email is required.");
}
if (personBean.getAge() < 18) {
addFieldError("personBean.age", "Age is required and must be 18 or older");
}
}
当用户在register表单上按下提交按钮时,Struts2将把用户的输入传递给personBean的实例字段。然后Struts 2将自动执行validate 方法。如果if判断条件为true,那么Struts2将调用它的addFieldError方法(继承自ActionSupport类)。
如果验证失败,那么Struts2就不会继续调用execute方法了。相反,Struts2 将返回“input”作为该操作的结果。(常用结果的还有success、error)
处理 "Input" 结果
那么,如果Struts2返回“input”表示用户的表单输入无效,那么接下来该怎么办呢?在大多数情况下,我们将希望重新显示具有表单的web页面,并将错误消息包含在表单中,以告知用户。
为了处理"input" 结果,我们需要在struts.xml添加配置:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd"> <struts> <constant name="struts.devMode" value="true" /> <package name="basicstruts2" extends="struts-default">
<action name="index">
<result>/index.jsp</result>
</action>
<!--hello->
<action name="hello" class="action.HelloWorldAction" method="execute">
<result name="success">/HelloWorld.jsp</result>
</action> <!-- register -->
<action name="register" class="action.RegisterAction" method="execute">
<result name="success">/thankyou.jsp</result>
<result name="input">/register.jsp</result>
</action>
</package> </struts>
因此,当验证失败,Struts2 返回"input"结果时,Struts2 将重新显示register.jsp。由于我们使用了Struts2 的表单标签,因此Struts2将自动的添加错误消息。这些错误消息是我们在addFieldError方法调用中指定的。addFieldError方法有两个参数。第一个是错误字段的表单字段名,第二个是在表单字段上方显示的错误消息
addFieldError("personBean.firstName", "First name is required.")
将会在表单上的firstName字段上面显示"First name is required."
运行


添加css
Struts2 的<s:head/>标签可用于对错误消息添加CSS,这个标签要放在HTML的<head>标签中,重新运行:

总结
本教程通过向Action类添加验证方法来验证用户的表单输入。还有一种更复杂的方法可以使用XML验证用户输入。如果您想了解关于在Struts 2中使用XML进行验证的更多信息,请参阅验证Validation
在我们的下一个教程中,我们将使用消息资源文件将文本从视图页面中分离出来。
struts2官方 中文教程 系列六:表单验证的更多相关文章
- struts2官方 中文教程 系列十一:使用XML进行表单验证
在本教程中,我们将讨论如何使用Struts 2的XML验证方法来验证表单字段中用户的输入.在前面的教程中,我们讨论了在Action类中使用validate方法验证用户的输入.使用单独的XML验证文件让 ...
- struts2官方 中文教程 系列十四:主题Theme
介绍 当您使用一个Struts 2标签时,例如 <s:select ..../> 在您的web页面中,Struts 2框架会生成HTML,它会显示外观并控制select控件的布局.样式和 ...
- struts2官方 中文教程 系列十:Form标签
介绍 在本教程中,我们将探索其他Struts 2表单控件.在前面的教程中,我们介绍了如何使用Struts 2表单(处理表单.表单验证和消息资源文件),我们介绍了如何使用Struts 2 head, f ...
- struts2官方 中文教程 系列七:消息资源文件
介绍 在本教程中,我们将探索使用Struts 2消息资源功能(也称为 resource bundles 资源绑定).消息资源提供了一种简单的方法,可以将文本放在一个视图页面中,通过应用程序,创建表单字 ...
- struts2官方 中文教程 系列九:Debugging Struts
介绍 在Struts 2 web应用程序的开发过程中,您可能希望查看由Struts 2框架管理的信息.本教程将介绍两种工具,您可以使用它们来查看.一个工具是Struts 2的配置插件,另一个是调试拦截 ...
- struts2官方 中文教程 系列十三:利用通配符选择方法
介绍 在本教程中,我们将介绍如何在struts.xml中配置action节点以达到仅使用一个action节点将几个不同的url关联到特定action类的特定方法.这样做的目的是减少struts.xml ...
- struts2官方 中文教程 系列十二:控制标签
介绍 struts2有一些控制语句的标签,本教程中我们将讨论如何使用 if 和iterator 标签.更多的控制标签可以参见 tags reference. 到此我们新建一个struts2 web 项 ...
- struts2官方 中文教程 系列八:异常处理
在本教程中,我们将探讨如何启用Struts 2框架处理web应用程序生成的任何未捕获的异常.Struts 2提供了健壮的异常处理,包括能够自动记录任何未捕获的异常,并将用户重定向到错误web页面. 贴 ...
- struts2官方 中文教程 系列五:处理表单
先贴个本帖的地址,免得其它网站被爬去了struts2教程 官方系列五:处理表单 即 http://www.cnblogs.com/linghaoxinpian/p/6906298.html 下载本章 ...
随机推荐
- One Order行项目里Item Category是怎么计算出来的
One Order的行项目里有个字段叫Item Category,我们在行项目里加入一个product后,就会自动带出Item Category来.这个值是怎么计算出来的? 检查CRMD_ORDERA ...
- ABAP的权限检查跟踪(Authorization trace)工具
事务码 STAUTHTRACE 1. 点击"Activate Trace" button激活跟踪: 可以看到跟踪状态已经处于打开状态. 在同一个application server ...
- 20165322 实验一 Java开发环境的熟悉
实验一 Java开发环境的熟悉 一.实验内容及步骤 (一)命令行下Java程序开发 按照步骤新建目录.键入代码,再编译运行输出.运行结果和TREE结构图如下: (二) IDEA下Java程序开发.调试 ...
- python常见异常及解决方法
异常1: ValueError: unsupported hash type sha224 ERROR:root:code for hash sha256 was not found. Traceba ...
- 【luogu P2298 Mzc和男家丁的游戏】 题解
题目链接:https://www.luogu.org/problemnew/show/P2298 对于迷宫问题,bfs是比较好的选择. 直接bfs模板 #include <iostream> ...
- webapi2返回 已拒绝为此请求授权。
开始用的webapi2中是没有问题的,后来再项目中加了个过滤器并继承了AuthorizeAttribute 然后在全球文件中注册你的过滤器,让每次执行的时候都会进来 我项目中只重写了OnAuthori ...
- 复制功能 js
示例: <input class="herf" type="text" v-model="herfUrl" readonly=&quo ...
- ATK-DataPortal 设计框架(二)
在信息的交换过程中,总是有此相同相似的功能,由于业务的各自不同,由同一类型来处理诸如增删改查等常见的信息处理方式.从日常的对些类行为操作为生成的类分析,大量雷同的代码遍布整个项目.框架中xxxHand ...
- UIImagePickerController获取照片的实现,添加overlay方法 (相机取景框)
DEVELOPER.XIAOYAOLI 技术笔记 简单的利用UIImagePickerController调用iPhone摄像头获取照片的方法,同时介绍了怎么添加overlay,用于自定义预览界面 ...
- 【PTA 天梯赛】L2-016. 愿天下有情人都是失散多年的兄妹(深搜)
呵呵.大家都知道五服以内不得通婚,即两个人最近的共同祖先如果在五代以内(即本人.父母.祖父母.曾祖父母.高祖父母)则不可通婚.本题就请你帮助一对有情人判断一下,他们究竟是否可以成婚? 输入格式: 输入 ...