`
simpledev
  • 浏览: 196194 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

webwork日期验证&Invalid field value for field Birthday

阅读更多

1.webwork源码分析:

com.opensymphony.xwork 
Interface XWorkMessages

public static final String ACTION_EXECUTION_ERROR = "xwork.error.action.execution";
public static final String MISSING_ACTION_EXCEPTION = "xwork.exception.missing-action";
public static final String MISSING_PACKAGE_ACTION_EXCEPTION = "xwork.exception.missing-package-action";
public static final String DEFAULT_INVALID_FIELDVALUE = "xwork.default.invalid.fieldvalue";

com\opensymphony\xwork\xwork-messages.properties
xwork.error.action.execution=Error during Action invocation
xwork.exception.missing-action=There is no Action mapped for action name {0}. Check if there is such an action name defined in xwork.xml and also if the such an action class exists. Check also the log to see if the action class is successfully loaded.
xwork.exception.missing-package-action=There is no Action mapped for namespace {0} and action name {1}. Check if there is such an action name with such namespace defined in the xwork.xml and also if such an action class exists. Check also the log to see if the action class is successfully loaded.
xwork.default.invalid.fieldvalue=Invalid field value for field "{0}".


com.opensymphony.xwork.util 
Class XWorkConverter (详见getConversionErrorMessage方法)
java.lang.Object
  ognl.DefaultTypeConverter
      com.opensymphony.xwork.util.XWorkConverter
All Implemented Interfaces: 
ognl.TypeConverter 

com.opensymphony.xwork.validator.validators 
Class ConversionErrorFieldValidator (详见validate方法)
java.lang.Object
  com.opensymphony.xwork.validator.validators.ValidatorSupport
      com.opensymphony.xwork.validator.validators.FieldValidatorSupport
          com.opensymphony.xwork.validator.validators.RepopulateConversionErrorFieldValidatorSupport
              com.opensymphony.xwork.validator.validators.ConversionErrorFieldValidator
All Implemented Interfaces: 
FieldValidator, ShortCircuitableValidator, Validator 

从validators.xml代码中:<validator name="date" class="com.opensymphony.xwork.validator.validators.DateRangeFieldValidator"/>
com.opensymphony.xwork.validator.validators 
Class DateRangeFieldValidator
java.lang.Object
  com.opensymphony.xwork.validator.validators.ValidatorSupport
      com.opensymphony.xwork.validator.validators.FieldValidatorSupport
          com.opensymphony.xwork.validator.validators.AbstractRangeValidator
              com.opensymphony.xwork.validator.validators.DateRangeFieldValidator
All Implemented Interfaces: 
FieldValidator, ShortCircuitableValidator, Validator 

 
2.例子如下:
freemarker:

<@ww.form action="test" method="post" validate="true">
     <@ww.textfield label="Birthday" name="Birthday" />
     <@ww.submit />
</@ww.form>

 
action:

  private Date Birthday;
  ...
  public Date getBirthday() {
      return Birthday;
  }
  public void setBirthday(Date birthday) {
      Birthday = birthday;
  }

 
action名字-validation.xml:
 

   <field name="Birthday">
        <field-validator type="date">
                <message>必须为日期类型</message>
        </field-validator>
    </field>

 
如果我们在Birthday文本框输入: 222,这是一种非法日期格式,应该验证提示信息为:必须为日期类型
但是:验证提示信息为:Invalid field value for field "Birthday".
理解为什么提示该信息,就需要理解上面列出来的webwork源码中关系.

 


解决方法:在本地工程国际化资源文件中增加:
xwork.default.invalid.fieldvalue = Must be date format
xwork.default.invalid.fieldvalue = \u5FC5\u987B\u4E3A\u65E5\u671F\u7C7B\u578B
这样就会提示我们设置的提示信息了.控制台却报错.


产生原因:date validator字段校验器,检查指定的日期是否在指定的范围内.而不是用来验证日期的格式是否正确,提示信息在webwork系统代码抛出.

 <!-- 检查指定的日期是否在指定的范围内 -->
  <field name="Birthday">
  <field-validator type="date">
      <param name="min">1900-01-01</param>
      <param name="max">2008-01-01</param>
      <message>Birthday must be within ${min} and ${max}</message>
  </field-validator>
 </field>
 <!-- 可以使用正则表达式解决 -->
 <validator type="regex">
     <param name="fieldName">Birthday</param>
     <param name="expression">^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$</param>
     <message>Birthday日期格式错误</message>
 </validator>

 
并且控制台没有报错,问题已解决.

 

3.版本:
 webwork-2.2.4.jar
 xwork-1.2.1.jar
 spring-2.0-rc2.jar

 

4.日期格式验证必须为webwork客户端验证,如果为服务器端验证,提示信息仍为:Invalid field value for field "Birthday".
而不是通过正则表达式的验证提示信息.

分享到:
评论

相关推荐

    webwork&spring&hibernate 实现登陆,注册,更新用户网页

    总的来说,"webwork&spring&hibernate 实现登陆,注册,更新用户网页"是一个典型的Java Web项目,它利用现代Web开发技术,构建了一个功能完善的用户管理系统。开发者通过理解并熟练掌握Webwork的请求处理、Spring的...

    Comparing Web Frameworks; Struts, Spring MVC, WebWork, Tapestry & JSF.pdf

    此软件介绍webwork and struts and jsf的区别

    Webwork 的 验证 客服端 和 服务器段 数据验证

    在Webwork中,数据验证是非常重要的一环,它确保了用户输入的数据符合应用的要求,从而提高了数据的安全性和一致性。数据验证分为客户端验证和服务器端验证,这两者都是保证数据质量不可或缺的部分。 **客户端验证*...

    webwork-register.rar_webwork_webwork 验证_webwork spring

    在"webwork-register"这个项目中,WebWork可能用于处理用户注册过程中的各种操作,如表单提交、数据验证和业务逻辑处理。 Spring框架是一个全面的企业级应用开发框架,它不仅提供了IoC(控制反转)和AOP(面向切面...

    解决webwork客户端验证提示信息重复多次显示问题

    WebWork是一个流行的Java Web框架,它提供了强大的动作框架和验证机制。然而,在实际应用中,有时可能会遇到一个问题,即客户端验证提示信息会重复多次显示,这不仅影响用户体验,也可能暴露出潜在的代码问题。本文...

    webwork验证框架

    WebWork提供了一系列预定义的验证类型,如“required”(必填)、“int”(整数范围)、“date”(日期范围)等。开发者可以通过实现`com.opensymphony.xwork.validator.Validator`接口或继承其抽象类(如`...

    webwork 登录逻辑验证(简单)

    WebWork登录逻辑验证是任何Web应用程序中的关键部分,它确保只有合法用户能够访问受保护的资源。 在WebWork中,登录过程通常涉及到以下几个步骤: 1. **请求处理**:当用户尝试登录时,他们通常会填写包含用户名和...

    webwork拦截器,验证,以及帮助文档

    本篇将详细介绍WebWork中的核心概念——拦截器(Interceptor)以及验证(Validation)机制,并结合提供的帮助文档进行学习指导。 首先,我们来理解WebWork的拦截器机制。在WebWork中,拦截器是处理请求的关键组件,...

    WebWork教程开发资料

    Field-Driven Action的焦点在于单独字段的验证,每个字段都有对应的验证规则。当表单提交时,WebWork会针对每个字段执行验证。相反,Model-Driven Action将整个对象模型作为操作单位,模型对象包含所有相关属性,...

    WebWork UI标签

    WebWork UI标签是一种用于构建Web应用程序用户界面的组件,它提供了丰富的功能,使得开发者能够更加便捷地创建交互式的Web页面。WebWork是一个不绑定特定视图技术的框架,支持多种模板语言,如JSP、Velocity和...

    webwork详细讲解.doc

    - **Field-Driven vs Model-Driven Action**:WebWork支持两种类型的Action,分别是字段驱动的Action(Field-Driven Action)和模型驱动的Action(Model-Driven Action)。前者更侧重于直接处理请求参数,后者则倾向...

    webwork2开发指南

    2. 数据验证(Validation):WebWork2提供了强大的数据验证机制,可以通过注解或XML配置文件定义验证规则,确保输入数据的有效性。 3. 国际化与本地化(i18n/L10n):WebWork2支持多语言环境,通过资源文件管理不同...

    WEBWORK

    WebWork 提供了强大的动作(Action)处理、类型转换、拦截器(Interceptor)机制和丰富的验证功能,帮助开发者构建可维护、可扩展的 Web 应用程序。 在 WebWork 中,配置是至关重要的,因为它定义了框架如何工作...

    webwork-1.4-src.zip_webwork_webwork s_webwork.zip_webwork1.4.zip

    8. **插件系统**:WebWork支持插件扩展,开发者可以方便地添加自定义功能,如验证、缓存管理等。 9. **配置管理**:WebWork的配置文件(如struts-config.xml)用于定义动作、结果、数据源等,这使得配置信息集中...

    webwork教程很好的学习教程

    **验证框架**是WebWork中用于对用户输入进行验证的工具集。 - **为用户注册添加验证功能**:通过定义验证规则,并在Action执行前后进行检查,确保用户输入的有效性。 #### 十一、XWork配置详述 **xwork.xml**是...

    webwork教程

    - WebWork提供了内置的验证框架来简化表单验证过程。 - 可以为Action添加验证规则,自动验证用户的输入数据。 - **XWork配置文件**: - xwork.xml是WebWork的核心配置文件,用于定义Action、拦截器、结果类型等...

    WebWork 教程

    通过OGNL,开发者可以轻松地访问和操作值堆栈(Value Stack)中的对象,值堆栈是WebWork用于存储和传递数据的核心机制之一,它在Action执行过程中保持数据的连续性,使得数据能够在多个Action之间共享。 #### 拦截...

    webwork学习资料

    WebWork 是一个基于Java的轻量级Web应用框架,它为开发人员提供了构建MVC(模型-视图-控制器)架构的应用程序的强大工具。在WebWork的架构中,开发者可以更专注于业务逻辑,而不用过多地关注底层的HTTP请求处理和...

    webwork源码底层实现

    5. **Value Stack(值栈)**:WebWork使用Value Stack来传递数据。Action的结果会被放入栈中,视图可以直接从栈中获取数据,简化了视图层的编写。`template`可能包含了模板文件,例如 Velocity模板(`webwork.vm`),...

    WebWork2.0讲解说明

    3. Interceptors(拦截器):拦截器是WebWork2.0的一个强大功能,允许在Action调用前后插入自定义逻辑,如权限验证、日志记录等。 二、WebWork2.0主要特性 1. 智能表单绑定:WebWork2.0支持自动将HTTP请求参数绑定...

Global site tag (gtag.js) - Google Analytics