struts的验证框架项目中用的可能比较少,我们用的比较多的方式是在页面前端使用js的验证框架来对表单进行初步的验证,然后可能利用异步技术对数据进行有效性验证。所以这部分只是我们只知道怎么用感觉就可以了,需要学习的就是验证拦截器的工作方式,以及国际化的处理。
验证可以采取两种方式,如果我们的Action继承了ActionSupport,那么就默认实现了Validateable接口。
(1)重写validate方法:
package com.struts.action;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.struts.domain.User;
public class UserAction extends BasicAction{
private static final long serialVersionUID =6096623410113055655L;
private static final Log logger = LogFactory.getLog(UserAction.class);
private User user;
@Override
public String execute() throws Exception {
session.put("from", user);
return SUCCESS;
}
@Override
public void validate() {
if(StringUtils.isBlank(user.getName())){
addFieldError("user.name", getText("user.required"));
}
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
在action中,我们重写了validate方法,并且在它的值为空时,我们添加了错误信息,注意getText方法是在取国际化的信息,这个稍后再讲。
在页面当中是这样的
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!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>
<s:form action="userAction" method="post">
<s:label for="user.name" value="姓名"></s:label> <s:textfield name="user.name"></s:textfield>
<s:label for="user.age" value="年龄"></s:label> <s:textfield name="user.age"></s:textfield>
<s:submit value="提交"></s:submit>
</s:form>
</body>
</html>
struts.xml中的配置:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.devMode" value="true"></constant>
<constant name="struts.custom.i18n.resources" value="messageResource"/>
<package name="struts" extends="struts-default" namespace="/">
<action name="index">
<result>index.jsp</result>
</action>
<action name="successAction" class="com.struts.action.SuccessAction">
<result>success.jsp</result>
</action>
<action name="userAction" class="com.struts.action.UserAction">
<result type="chain">successAction</result>
<result name="input">index.jsp</result>
</action>
</package>
</struts>
当验证出错时,会返回input视图,这时在user.name上方会添加错误信息
(2)利用xml配置验证信息
当需要验证多个字段时,复写validate方法就显得比较麻烦了,我们需要写很多段类似的验证代码,所以,struts提供了另一种验证方式即采用xml配置的方式,struts的验证是基于xwork的验证,所以,我们在xwork的包中,能找到validate的dtd,把它上面拷贝下来,然后我们在需要进行验证的Action的同一个包中,写一个xml文件,本例中我们对UserAction进行验证,所以xml的名字应该是UserAction-validation.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<field name="user.name">
<field-validator type="requiredstring">
<message key="user.required"></message>
</field-validator>
</field>
</validators>
同样,message中的key也是取的国际化资源包中的值
当我们提交一个空的表单时,同样会出现错误提示。
二、国际化
struts会根据请求头中的local,进行区域定位,然后定位到我们的国际化资源文件,我们可以在struts.properties中或者在struts.xml中添加常量的方式来指定国际化资源的名字比如我们在struts.xml中,配置了如下的常量:
<constant name="struts.custom.i18n.resources" value="messageResource"/>
那么在类路径下,我们建立如下两个文件
messageResource_en_US.properties
messageResource_zh_CN.properties
username=\u7528\u6237\u540D
password=\u5BC6\u7801
user.required=\u7528\u6237\u540D\u4E0D\u80FD\u4E3A\u7A7A
这是key-value的形式,然后我们就可以引用这些国际化信息了。
(1)在jsp中用<s:text name="XXX">
(2)在xml中,用key的方式
(3)在action中用getText()的方式
分享到:
相关推荐
此压缩包文件包含的是Struts2的源码,特别适合初学者研究和学习,其中涵盖了拦截器和验证等关键组件的实现。 首先,我们来深入了解Struts2的核心概念: 1. **Action类**:在Struts2中,业务逻辑通常由Action类执行...
通过分析提供的源码,可以更好地了解Struts2的工作流程,学习如何组织Action、Interceptor、配置文件等,从而提升开发能力。在实践中不断探索,可以逐步熟练运用Struts2进行高效、稳定的Web应用开发。
Struts2是Java Web开发中一个非常重要的框架,它基于MVC(Model-View-Controller)设计模式,为开发者提供了一种结构化和可扩展的方式来构建动态网站应用程序。该框架自2005年发布以来,经过多次更新迭代,成为了...
对于初学者,这是一条学习和掌握Struts2的宝贵途径,而对于经验丰富的开发者,源码分析能帮助他们更高效地定位和解决问题。因此,"struts2完全学习手册源码"是提升Java Web开发技能的绝佳资源。
Struts2是一个强大的Java web应用程序框架,用于构建和部署企业级的MVC(Model-View-Controller)架构的Web应用。这个入门学习源码包包含了关于Struts2的基础知识、学习笔记以及源码实例,旨在帮助初学者快速理解和...
在本资源中,"struts2 spring hibernate框架技术与项目实战 光盘源码 上"提供了这三大框架的实践项目代码,帮助开发者深入理解并掌握它们的集成与应用。 Struts2作为MVC(模型-视图-控制器)框架,主要负责处理HTTP...
Struts2是一个基于MVC(Model-View-Controller)设计模式的开源JavaEE框架,它极大地简化了企业级Web应用的开发。这个压缩包“struts-2.3.1”很可能包含了Struts2框架的源代码,版本为2.3.1。在这个版本中,我们可以...
本项目源码提供了一个基础的Struts2应用程序实例,对于初学者来说,这是一个很好的学习资源,可以深入理解Struts2的工作原理和架构。 Struts2的核心组件包括: 1. **Action类**:Action类是业务逻辑的载体,它是...
Struts2是一个基于MVC(Model-View-Controller)设计模式的开源Java Web框架,它在Web应用开发中被广泛使用。源码分析是深入理解框架工作原理、优化代码以及解决实际问题的重要途径。这里我们将重点探讨Struts2的...
Struts 2是Java Web开发中的一个开源框架,它基于MVC(Model-View-Controller)设计模式,用于构建高效、可扩展的企业级应用程序。在深入理解Struts 2的源码之前,我们需要先了解其核心概念和组件。 1. **Action类...
Struts2是一个基于MVC(Model-View-Controller)设计模式的开源Java Web框架,它在Web应用开发中被广泛使用。源码分析是深入理解一个框架工作原理的关键步骤,对于提升开发技能和解决问题有着不可估量的价值。下面将...
总之,通过这本书的源码学习,你不仅可以系统地掌握Struts2的框架原理,还能积累实际开发经验,提升Java Web开发技能。在实践中不断探索和理解,将使你对Struts2有更深的认识,为后续的项目开发打下坚实的基础。
通过对Struts2源码的学习,我们可以更深入地理解MVC模式在实际应用中的实现,了解如何设计可扩展和可维护的框架。同时,也能帮助我们更好地调试和优化应用程序,提升开发效率。在研究struts-2.2.1.1 src这个源码包时...
在IT领域,Spring、Hibernate和Struts2被誉为Java Web开发中的“三大框架”。这三大框架在构建企业级应用中起着至关重要的作用,它们分别解决了应用程序的依赖管理、持久化和MVC(Model-View-Controller)架构问题。...
这个"深入浅出Struts2源码-例子程序(完整版)"的资源包含了一个全面的学习材料,旨在帮助开发者理解Struts2的核心工作原理和实际应用。 Struts2的源代码分析是提升开发技能的关键,它让你能深入了解框架如何处理...
书中介绍了如何利用Struts 2 来解决Web 应用开发中的常见问题,同时还深入浅出地探讨了许多能帮助程序员编写Struts 2 应用程序的技巧,如管理页面导航活动、输入验证、国际化和本地化、对Ajax 的支持,等等。...
而自动验证则是利用Struts2的内置验证框架,根据配置文件自动进行数据校验。 **手动验证**: 1. 创建自定义拦截器:首先,我们需要创建一个继承自`com.opensymphony.xwork2.interceptor.AbstractInterceptor`的类,...
本示例程序是一个基础的Struts2应用,旨在展示如何使用Struts2进行自定义类型转换和验证框架的集成。 在Struts2中,自定义类型转换是非常实用的功能,允许我们将用户输入的数据自动转换为我们期望的Java对象类型。...
通过分析这个基于Struts2的登录源码,我们可以深入理解Struts2框架的工作原理,学习如何组织MVC架构,以及如何在IDEA中进行Java web开发。同时,这也是一个很好的实践案例,可以帮助开发者掌握用户认证和授权的基本...
本项目以"Spring+Struts2+Hibernate"三大框架为核心,旨在实现一个校园精品课程网的后台系统,提供丰富的功能和良好的用户体验。下面将详细介绍这三个框架以及它们在该项目中的应用。 1. Spring框架:Spring是Java...