- 浏览: 543371 次
- 性别:
- 来自: 天津
文章分类
- 全部博客 (230)
- java (87)
- c/c++/c# (39)
- ASP.net MVC (4)
- eclipse/visual studio (3)
- tomcat/weblogic/jetty (13)
- linux/unix/windows (20)
- html/javascript/jquery/kendo/bootstrap/layui/vue/react (31)
- hibernate/struts/spring/mybatis/springboot (21)
- lucene/solr/ELK (2)
- shiro (0)
- oracle/sqlserver/mysql/postgresql (23)
- shell/python/ruby (6)
- android (0)
- maven/ant (1)
- freemarker/thymeleaf/velocity (1)
- open source project (41)
- cache/memcached/redis (0)
- nosql/hadoop/hbase/mongodb (0)
- system architecture/dubbo/zookeeper (0)
- software testing (0)
- system optimization (0)
- system security (0)
- tcp/udp/http (2)
- roller/wordpress (2)
- 工具收藏 (8)
- 文摘 (4)
- 生活 (0)
最新评论
-
coconut_zhang:
这个demo 非常完整了,是指下面说的那个html 模版,模版 ...
flying sauser, thymeleaf实现PDF文件下载 -
a93456:
你好,你有完整的demo吗? String template这 ...
flying sauser, thymeleaf实现PDF文件下载 -
yujiaao:
fn 函数循环是没有必要的啊,可以改成
protecte ...
Java 笛卡尔积算法的简单实现 -
安静听歌:
设置了.setUseTemporaryFileDuringWr ...
使用jxl导出大数据量EXCEL时内存溢出的解决办法 -
q280499693:
写的很详细,但是我现在想知道他们是怎么定位log4j.prop ...
关于SLF4J结合Log4j使用时日志输出与指定的log4j.properties不同
在Struts2应用中提供验证的方式有两种——编程式和声明式。
编程式验证
要提供编程式验证的话,action就要实现Validateable接口。该接口只有一个方法,在方法中需要执行验证操作:void validate();
为了将验证中出现的问题反馈给用户,action还需要实现ValidationAware接口。这个接口更为复杂一些,它里面的方法可以用来添加验证错误,判断当前是否有验证错误,等等。
如果可能的话,你的action可以继承ActionSupport类,在该类中提供了以上这些接口的缺省实现。只有当验证操作极其复杂的时候,我们才该使用编程式验证。更好的解决方案是采用声明式验证。
声明式验证
5) ExpressionValidator验证
使用OGNL表达式作为验证条件,示例:
<validators>
<validator type="expression">
<param name="expression">name.equals("ls")</param>
<message>INVALID NAME!</message>
</validator>
<field name="name">
<field-validator type="requiredstring">
<message>Name is required!</message>
</field-validator>
</validators>
上述例子中 name 为一属性名,使用expression验证器验证其值是否为 "ls". 其中"ls"为一个具体值直接写在
验证配置文件中,也可以来自静态常量或静态方法的返回值。示例:
<validators>
<validator type="expression">
<param name="expression">name.equals(@com.briup.Constant@NAME)</param>
<message>INVALID NAME!</message>
</validator>
</validators>
其中Constant类源文件为:
public class Constant {
public static final String NAME="ww";
public static String getName() {
return "sq";
}
}
注意:属性和方法的修饰符应设置为 public.
5) VisitorFieldValidator验证
多个Action类中都要验证相同JavaBean对象的各个属性,为了避免验证配置信息出现在多个配置文件中,可以
将JavaBean对象的验证信息单独写在一个文件中,然后各Action验证配置文件使用visitor类型验证器去引用。
示例:
a. 没有使用visitor类型验证器
i. JSP页面
login.jsp
---------------------------------------------------------------
<h3>Student Login</h3>
<s:form action="login">
<s:textfield name="name" label="name"/>
<s:textfield name="password" label="Password"/>
<s:submit value="Submit"/>
</s:form>
register.jsp
---------------------------------------------------------------
<h3>Student Register</h3>
<s:form action="register">
<s:textfield name="name" label="name"/>
<s:textfield name="password" label="Password"/>
<s:submit value="Submit"/>
</s:form>
ii. Action
StudentProAction.java
---------------------------------------------------------------
public class StudentProAction extends
ActionSupport implements ModelDriven<Student> {
private Student student=new Student();
public String login() {
return "success";
}
public String register() {
return "success";
}
public Student getModel() {
return student;
}
}
iii.Struts.xml
<action name="login" class="com.briup.StudentProAction" method="login">
<result>/loginResult.jsp</result>
<result name="input">/login.jsp</result>
</action>
<action name="register" class="com.briup.StudentProAction" method="register">
<result>/registerResult.jsp</result>
<result name="input">/register.jsp</result>
</action>
iii.验证配置文件:
StudentProAction-login-validation.xml(和StudentProAction同包)
---------------------------------------------------------------
<validators>
<field name="name"> <!-- 属性名应与表单控件同名,而不是Action中属性名-->
<field-validator type="requiredstring">
<message>Name is required!</message>
</field-validator>
</field>
<field name="password">
<field-validator type="requiredstring">
<message>Password is required!</message>
</field-validator>
</field>
</validators>
StudentProAction-register-validation.xml(和StudentProAction同包)
---------------------------------------------------------------
<validators>
<field name="name">
<field-validator type="requiredstring">
<message>Name is required!</message>
</field-validator>
</field>
<field name="password">
<field-validator type="requiredstring">
<message>Password is required!</message>
</field-validator>
</field>
</validators>
注意:验证配置文件中<field>中name属性值与表单控制同名,使用<s:textfield>即可显示错误提示信息,
否则,须通过<s:fielderror/>显示错误提示信息;
. <s:fielderror/>:显示所有field级别的错误提示信息;
. <s:fielderror>
<s:param>student.password</s:param>
</s:fielderror>
: 提定显示名称为student.password的field级别的错误提示信息;
b. 使用visitor类型验证器
其它地方与上同,只是配置文件和显示错误信息设置有点变动:
iii.验证配置文件:
StudentProAction-login-validation.xml(和StudentProAction同包)
---------------------------------------------------------------
<validators>
<field name="student"> <!-- 属性名与Action中属性同名-->
<field-validator type="requiredstring">
<message>Name is required!</message>
</field-validator>
</field>
</validators>
StudentProAction-register-validation.xml(和StudentProAction同包)
---------------------------------------------------------------
<validators>
<field name="student"> <!-- 属性名与Action中属性同名-->
<field-validator type="requiredstring">
<message>Name is required!</message>
</field-validator>
</field>
</validators>
Student-validation.xml(和Student类同包)
---------------------------------------------------------------
<validators>
<field name="name">
<field-validator type="requiredstring">
<message>Name is required!</message>
</field-validator>
</field>
<field name="password">
<field-validator type="requiredstring">
<message>Password is required!</message>
</field-validator>
</field>
</validators>
注意这时显示错误信息时须使用标记 <s:fielderror/>.
2. 客户端校验
在服务器端设置成功的基础上,在<s:form>标记中将属性validate设置为true即可。这时错误显示效果和服务器端
验证相同,只不过借助于javascript实现而已。
注意,借助于OGNL表达式使用expression类型的验证器还需使用服务器端验证实现。???
七. 国际化
1. JSP页面显示国际化信息:
<s:text name="login.title"/> <!-- login.title为资源文件key值 -->
<s:textfield name="name" key="login.name"/> <!-- login.name为资源文件key值 -->
<s:property value="%{getText('login.name')}"/> <!-- login.name为资源文件key值 -->
2. Action中获取国际化信息
getText("资源文件key值"); //getText为ActionSupport的方法
3. 配置文件中获取国际化信息
<message>${getText('login.name')</message> <!-- login.name为资源文件key值 -->
发表评论
-
Spring Data JPA框架系列(三)-自定义Repository接口详解
2022-05-08 09:03 0前面讲了Spring Boot 整合Spring Boot ... -
flying sauser, thymeleaf实现PDF文件下载
2016-06-17 14:58 5240thymeleaf 的资料比较少,资料大部分都是和spri ... -
thymeleaf与spring整合
2016-06-15 10:08 12391、使用的是Spring EL而不是Ognl。2、访问上下文 ... -
SpringMVC 400 Bad Request 问题
2016-06-15 09:11 1967在提交表单时,发生400错误,并未进入save方法。 ... -
eclipse插件Maven添加依赖查询无结果的解决方法(Select Dependency doesn't work)
2016-04-22 08:33 736在eclipse中用过maven的可能都遇到过这种情况,我 ... -
Freemarker网站静态化的实现(转载)
2012-06-20 13:39 1427做程序也做了将近4年时间了,从来没有发过什么技术性的文章,今 ... -
SpringSecurity 3配置文件
2012-06-10 12:58 1315最近查找了一些Spring security3的资料,感觉网上 ... -
Struts2标签库
2012-05-19 21:19 1556Struts2标签库概述使用标 ... -
struts2的validate错误跳转与chain配合使用的要点
2012-05-18 16:30 1472本文基于struts2.1.8.1 按照struts2的官方文 ... -
OGNL表达式struts2标签“%,#,$”
2012-05-18 15:32 1166一、什么是OGNL,有什么特点? ... -
如何自定义Struts2表单验证后的错误信息显示格式/样式
2011-11-17 10:43 2845环境 Struts 2.1.8.1 + Myeclipse ... -
strtus2.0实现上传
2011-10-31 10:44 1333Struts 2是通过Commons FileUpload文件 ... -
input中disabled,readonly解决办法及区别
2011-05-27 10:35 6371input的字段当为diabled时时无法获取数值得,所以最 ... -
getCurrentSession 与 openSession() 的区别
2011-05-26 11:00 11191 getCurrentSession创建的session会和 ... -
Struts2拦截器执行顺序
2010-11-15 11:25 2743在之前的文章中,我们 ... -
struts2默认拦截器详细说明
2010-11-15 11:23 19981. 理解拦截器 1.1. 什么是拦截器: 拦 ... -
Struts2向JasperReport传参数配置
2010-10-26 10:11 1665Recently I spent a whole day se ... -
struts2与jasperreport整合不能显示图片imgags/px
2010-09-08 13:37 2534终结解决方案:Struts2整 ... -
Spring Write operations are not allowed in read-only mode 错误
2010-09-02 10:19 1220使用Spring提供的Open Session In View ... -
hibernate配置参数
2009-04-03 23:55 1353Hibernate输出SQL语句以便更加深入调试程序----参 ...
相关推荐
在本项目总结中,我们将深入探讨Struts2的核心特性、工作原理以及如何在实际项目中应用。 一、Struts2框架基础 1. 动态方法调用(Dynamic Method Invocation,DMI):Struts2允许通过URL直接调用Action类的方法,...
在Struts2中,验证框架是处理用户输入验证的关键部分,它确保了从客户端接收到的数据的质量和准确性。本示例将深入探讨Struts2验证框架的基本用法,特别适合初学者理解和掌握。 ### 一、Struts2验证框架概述 ...
这篇博文"Struts1验证总结"很可能详细介绍了Struts1中关于验证的各个方面,包括配置、自定义验证逻辑以及常见问题等。 在Struts1中,验证通常通过ActionForm对象进行,该对象对应于用户界面的表单。当用户提交表单...
总结起来,Struts2的XML表单验证是通过创建XML文件定义验证规则,然后在Action类中处理数据,通过框架自动进行验证并返回错误信息。这种方式使得验证逻辑与业务逻辑分离,提高了代码的可维护性和复用性。对于大型...
本总结将深入探讨Struts2的核心概念、关键功能和实用技术,以帮助开发者全面理解并熟练运用这一框架。 一、Servlet模板 在Struts2中,Servlet模板是一种处理请求和响应的方式。它通过拦截器链对请求进行处理,然后...
综上所述,Struts2的输入校验机制不仅支持基本的手动校验,还提供了高度可配置和扩展的验证框架,使得开发者能够根据应用的具体需求,灵活地实现各种校验逻辑,从而提升应用程序的质量和用户体验。
### Struts2 自定义验证程序的实现方法详解 #### 一、Struts2 内建验证程序实现的分析 在探讨如何实现自定义验证程序之前,我们先来了解一下 Struts2 的内置验证机制。Struts2 提供了丰富的内置验证器(Validator...
总结来说,Struts2提供了完善的框架和工具,使得开发登录注册功能变得容易,同时通过验证机制保证了数据的准确性和安全性。通过学习和实践这个主题,开发者可以掌握Struts2的核心概念和实际操作,提升在企业级应用...
以下是对Struts2知识点的详细总结: 1. **Struts2核心组件** - **FilterDispatcher**(或现在的`StrutsPrepareAndExecuteFilter`):这是Struts2的核心过滤器,它负责拦截请求,处理Action映射,并转发到相应的...
- **Struts2**提供了一套更加灵活的验证机制,支持注解、XML配置等多种验证方式,并且能够与业务逻辑分离,提高了代码的可读性和可维护性。 5. **配置文件:** - **Struts1**使用`struts-config.xml`文件进行配置...
### Struts2 验证框架详解 #### 一、引言 在Web开发中,确保用户输入的有效性和正确性是至关重要的。Struts2作为一款流行的Java Web开发框架,提供了强大的验证功能来帮助开发者实现这一目标。本文将详细介绍Struts...
### Struts2验证机制详解 #### 一、引言 在Web应用开发中,数据验证是确保应用程序稳定性和安全性的重要环节。Struts2框架提供了一套完善的验证机制,能够帮助开发者轻松实现对用户输入数据的有效性检查。本文将...
2. **表单验证的重要性** 表单验证是Web应用中必不可少的一环,用于确保用户提交的数据符合预设的规则,防止无效或恶意的数据进入系统。动态表单验证允许我们根据不同的场景或用户角色灵活地调整验证规则。 3. **...
在Struts2中,当服务端验证失败时,通常会将错误信息保存在ActionContext中,并通过ActionSupport类中的addFieldError方法添加到字段上。此时,为了保留页面的初始状态,我们可以采取以下策略: 1. 使用`...
在Struts2中,验证是处理用户输入数据的关键部分,确保数据的有效性和一致性。本实例将详细介绍如何在Struts2中实现简单的验证功能。 ### 1. Struts2验证概述 Struts2提供了一种灵活的验证机制,可以基于XML配置...
总结起来,Struts提供了多种验证方式,包括ActionForm验证、XML配置的Validation框架、动态验证、Tiles验证、拦截器验证、第三方验证库集成以及客户端的AJAX验证。选择合适的方式取决于项目需求和团队偏好,重要的是...