`
lydawen
  • 浏览: 471824 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

struts1 配置多次加载validator plugin 导致的问题

    博客分类:
  • java
阅读更多


  项目大了,会出现多个struts-config 配置文件,有时由于各自为营,会在每个struts-config里都配置一个自己用到的验证配置文件,之后往往会出现些“奇怪的问题”。

  比较明显的一个问题就是,明明自己配置了验证plugin,也配置对了相应的validator文件,可验证就是不起作用,甚至导致action或相应的jsp 在被 访问的时间出现异常。

  接下来先看下org.apache.struts.validator.ValidatorPlugIn 源码中一部分:

 

private String pathnames = null;

public String getPathnames() {

   return pathnames;

}

 上面就是获取你在struts-config中配置验证插件的的pathnames,在插件被初始化时,会执行

 

public void init(ActionServlet servlet, ModuleConfig config) throws ServletException

 

 方法,它里面又先调用 this.initResources(); 在这个方法内容就是加载验证配置文件,并将加载结果保存到类变量resources,resources 的定义:    

 

protected ValidatorResources resources = null;

 

在 initResources()最后有如下语句,将分析后的验证配置文件内容进行保存

 

 this.resources = new ValidatorResources(urlArray);

 

回到init(ActionServlet servlet, ModuleConfig config)方法,在调用initResoures()后,将执行下面两行:

servlet.getServletContext().setAttribute(VALIDATOR_KEY + config.getPrefix(), resources);

 

servlet.getServletContext().setAttribute(STOP_ON_ERROR_KEY + '.' + config.getPrefix(), (this.stopOnFirstError ? Boolean.TRUE : Boolean.FALSE));

 

从第一句就能看到,它是将结果保存到ServletContext中,且Key是不变的,也就是说,当你加载多个相同的验证插件,将导致最开始加载的被后面的直接覆盖,就会出现明明加载了但并未起作用甚至导致页面显示不正常。

 

但如上面红色字体部分,我们是可以让多个验证插件同时存在的。当我们在web中进行配置时,可以加上模块名,如默认ActionServlet 有config 这个参数,我们可以添加配置config/moduleName 这个moduleName有点像struts2中package的namespace.这样在访问具体action时路径也就变为app/moduleName/action。具体config怎么来的建议查看相关struts 初始化的文章,API对ModuleConfig.getPrefix()的描述如下:

The prefix of the context-relative portion of the request URI, used to select this configuration versus others supported by the controller servlet. A configuration with a prefix of a zero-length String is the default configuration for this web module.

 

代码格式调了半天就是调不好,干脆不用代码标记了

 

分享到:
评论

相关推荐

    Struts1的validator验证框架

    本文将深入探讨Struts1 Validator框架的核心概念、配置与实现细节。 #### 一、Struts1 Validator框架概述 Struts1的Validator框架主要负责在提交表单前对用户输入进行校验,确保数据的有效性和安全性。它支持多种...

    struts1.x validator框架验证入门例子

    Validator框架是Struts1.x的一个重要组成部分,主要用于处理客户端和服务器端的数据验证。在这个入门例子中,我们将深入理解Validator框架的基本概念、配置以及如何在实际项目中应用。 一、Validator框架简介 ...

    Struts Hibernate Spring 集成开发宝典 validator

    1. Struts的配置与Action类设计 2. Hibernate的实体模型和数据持久化 3. Spring的IoC和AOP原理及实践 4. 三者之间的集成配置,如Spring管理Struts的Action和Hibernate的数据源 5. Validator的使用和自定义验证规则 6...

    struts1.x使用common-validator验证框架

    而Common-Validator是Apache Commons项目的一部分,它为Struts1.x提供了一种强大的数据验证机制。这个框架允许开发者定义表单字段的验证规则,并在用户提交表单时自动执行这些规则,从而提高应用的安全性和用户体验...

    struts验证器validator使用,以及自定义验证器

    1. **引入依赖**:在Maven项目的pom.xml文件中添加Struts2的Validator相关依赖,例如: ```xml <groupId>org.apache.struts <artifactId>struts2-validation-plugin <version>2.x.x ``` 2. **配置struts....

    struts1.3实现的Validator简单验证

    1. 配置文件:在Struts1.3中,Validator的配置通常位于`validation.xml`文件中,这里定义了验证规则和错误消息。每个ActionForm对应一个验证配置,用于指定需要验证的字段、验证规则以及错误消息。 2. 验证规则:...

    struts中使用validator验证框架

    Validator框架通过XML配置文件(通常命名为struts-validator.xml或validation.xml)定义验证规则。这些规则包括必填字段、长度限制、数字范围等。例如,你可以为一个用户名字段设定“非空”和“最小长度5”的规则,...

    struts validator验证框架项目

    Struts Validator是一个强大的验证框架,它是Apache Struts框架的一部分,用于在Java Web应用程序中实现数据...通过合理的配置和使用,开发者可以有效地防止因用户输入错误导致的问题,提升系统的安全性与用户体验。

    Struts Validator 开发指南

    Struts 通过插件(Plugin)机制来集成 Validator 功能,使得开发者可以轻松地在应用中添加数据验证规则,从而提高应用的安全性和用户体验。 要使 Struts 项目支持 Validator,首先需要在 `struts-config.xml` 文件...

    struts 的validator框架验证

    Struts的Validator框架是Java Web开发中用于处理用户输入验证的一种强大的工具,它与MVC架构中的控制器层紧密结合,提供了一种便捷的方式来确保用户提交的数据符合预设的业务规则。这个框架大大简化了数据验证的过程...

    Struts2-plus.rar_plus_struts2 plus_struts2 validator _strutsplus

    另一个文件"Struts2QuickValidation.pdf"很可能是一个用户指南或文档,详细介绍了如何使用Struts2 Plus进行数据验证,包括如何配置插件、定义验证规则、处理验证错误以及如何在视图层展示验证结果等。这个文档对于...

    Struts的Validator-rules详解

    2. **验证规则元素**:XML配置文件中,每个验证规则由一个`field`元素表示,它包含一个`name`属性,指定要验证的Form Bean字段名,以及一个或多个`field-validator`子元素,定义具体的验证规则类型。 3. **验证类型...

    解决Struts1.x中使用Validator框架对DispatchAction不同方法使用不同的字段验证的示例

    解决Struts1.x中使用Validator框架对DispatchAction不同方法使用不同的字段验证 你可以先参看我的blog文章:http://blog.csdn.net/qjyong/archive/2008/11/16/3311688.aspx 再决定是否下载。

    Commons Validator 1.3与Struts 1.1混合使用时的问题处理

    1. 配置问题:可能由于Validator配置文件(如validator-rules.xml)与Struts配置文件(struts-config.xml)之间的不匹配导致。确保两个文件中的bean引用和类路径设置正确无误,同时,验证器定义也需要正确地映射到...

    struts2用户登录实例的validator后台校验

    Struts2会自动读取配置文件中的规则,并在用户提交表单时执行这些验证。 当验证失败时,Struts2会自动填充Action的错误信息,并将其传递到视图层显示。我们可以在JSP页面上通过`<s:fielderror>`标签显示这些错误...

    struts自定义Validator示例

    struts中自定义validator验证 <br>很多时候需要验证“密码”与“重复密码”是否一致,如果放在服务器端验证就浪费资源了。 如何在客户端进行验证呢?JS可以实现,但是struts的validator框架是否能实现呢?-见...

    Struts Validator验证框架详细讲解.txt

    此外,Struts Validator还依赖于两个XML配置文件:`validator-rules.xml`和`validation.xml`。 - `validator-rules.xml`:这个文件定义了各种预定义的验证规则,开发者可以根据实际需求修改或添加规则。 - `...

    03_张孝祥09年Struts视频_validator单元3.rar

    1. **定义验证规则**:在XML配置文件(如struts-config.xml或validator-rules.xml)中,开发者可以定义每个字段的验证规则,如非空检查、长度限制、格式验证(如电子邮件地址、日期等)。 2. **创建验证表单**:在...

    struts validator框架以及filter 乱码

    Struts Validator框架是Apache Struts框架的一个重要组成部分,主要用于处理Web表单验证。它提供了一种声明式的方式来定义验证规则,使得开发者可以集中精力在业务逻辑上,而不是编写复杂的验证代码。Validator框架...

Global site tag (gtag.js) - Google Analytics