先贴个本帖的地址,以免被爬: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官方 中文教程 系列六:表单验证的更多相关文章

  1. struts2官方 中文教程 系列十一:使用XML进行表单验证

    在本教程中,我们将讨论如何使用Struts 2的XML验证方法来验证表单字段中用户的输入.在前面的教程中,我们讨论了在Action类中使用validate方法验证用户的输入.使用单独的XML验证文件让 ...

  2. struts2官方 中文教程 系列十四:主题Theme

    介绍 当您使用一个Struts 2标签时,例如 <s:select ..../>  在您的web页面中,Struts 2框架会生成HTML,它会显示外观并控制select控件的布局.样式和 ...

  3. struts2官方 中文教程 系列十:Form标签

    介绍 在本教程中,我们将探索其他Struts 2表单控件.在前面的教程中,我们介绍了如何使用Struts 2表单(处理表单.表单验证和消息资源文件),我们介绍了如何使用Struts 2 head, f ...

  4. struts2官方 中文教程 系列七:消息资源文件

    介绍 在本教程中,我们将探索使用Struts 2消息资源功能(也称为 resource bundles 资源绑定).消息资源提供了一种简单的方法,可以将文本放在一个视图页面中,通过应用程序,创建表单字 ...

  5. struts2官方 中文教程 系列九:Debugging Struts

    介绍 在Struts 2 web应用程序的开发过程中,您可能希望查看由Struts 2框架管理的信息.本教程将介绍两种工具,您可以使用它们来查看.一个工具是Struts 2的配置插件,另一个是调试拦截 ...

  6. struts2官方 中文教程 系列十三:利用通配符选择方法

    介绍 在本教程中,我们将介绍如何在struts.xml中配置action节点以达到仅使用一个action节点将几个不同的url关联到特定action类的特定方法.这样做的目的是减少struts.xml ...

  7. struts2官方 中文教程 系列十二:控制标签

    介绍 struts2有一些控制语句的标签,本教程中我们将讨论如何使用 if 和iterator 标签.更多的控制标签可以参见 tags reference. 到此我们新建一个struts2 web 项 ...

  8. struts2官方 中文教程 系列八:异常处理

    在本教程中,我们将探讨如何启用Struts 2框架处理web应用程序生成的任何未捕获的异常.Struts 2提供了健壮的异常处理,包括能够自动记录任何未捕获的异常,并将用户重定向到错误web页面. 贴 ...

  9. struts2官方 中文教程 系列五:处理表单

    先贴个本帖的地址,免得其它网站被爬去了struts2教程 官方系列五:处理表单  即 http://www.cnblogs.com/linghaoxinpian/p/6906298.html 下载本章 ...

随机推荐

  1. JsonResponse、FileResponse和StreamingHttpResponse

    一.JsonResponse对象 class JsonResponse(data,encoder=DjangoJSONEncoder,safe=True,json_dumps_params=None, ...

  2. pthread_create & pthread_exit

    http://www.cppblog.com/saha/articles/189802.html 1.   pthread_create    #include <pthread.h>   ...

  3. HDU 1521 指数型母函数

    方法一: DFS 方法二:生成函数 每个数可以重复一定次数,求排列组合数,这是裸的指数型生成函数: #include <bits/stdc++.h> using namespace std ...

  4. 课堂笔记:HTML----------图片热点

    HTML----------图片热点: 规划出图片上的一个区域,可以做出超链接,直接点击图片区域就可完成跳转的效果. 代码: <!DOCTYPE html PUBLIC "-//W3C ...

  5. Let’s Encrypt 最近很火的免费SSL 使用教程

    2015年10月份,微博上偶然看到Let's Encrypt 推出了beta版,作为一个曾经被https虐出血的码农来说,这无疑是一个重磅消息.并且在全站Https的大趋势下,Let's Encryp ...

  6. Spring data jpa命名规范

    JPA命名规范 (sample与JPQL等效) Table 4. Supported keywords inside method names Keyword Sample JPQL snippet ...

  7. heidsql(mysql)安装教程和mysql修改密码

    简单介绍安装 官网下载:https://mariadb.org/download/ 直接下载(mariadb-10.3.9-winx64.msi):https://github.com/weibang ...

  8. 前端静态文件如何应对HTTPS的到来

    近几年,越来越多的网站开始支持https,我们可以看到国外的比如github.谷歌.facebook:国内的有百度.淘宝.博客园.coding.net.worktile等一系列的网站. 我再最近的开发 ...

  9. SpeedTree制作超真实老宅

  10. ATK-DataPortal 设计框架(三)

    边界清晰.服务自治.契约共享.基于策略的兼容性,是面向对向设计时四个基本原则,我们的应用可能分布在不同的环境之中,应用可能在同一服务器中,也可能在不同的网络环境中,保证框架的基类能在不同环境中仍然可用 ...