`
coconut_zhang
  • 浏览: 543371 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

Struts2验证总结

 
阅读更多

在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值 -->

分享到:
评论

相关推荐

    struts2总结项目总结

    在本项目总结中,我们将深入探讨Struts2的核心特性、工作原理以及如何在实际项目中应用。 一、Struts2框架基础 1. 动态方法调用(Dynamic Method Invocation,DMI):Struts2允许通过URL直接调用Action类的方法,...

    struts2验证框架简单示例

    在Struts2中,验证框架是处理用户输入验证的关键部分,它确保了从客户端接收到的数据的质量和准确性。本示例将深入探讨Struts2验证框架的基本用法,特别适合初学者理解和掌握。 ### 一、Struts2验证框架概述 ...

    struts1验证总结

    这篇博文"Struts1验证总结"很可能详细介绍了Struts1中关于验证的各个方面,包括配置、自定义验证逻辑以及常见问题等。 在Struts1中,验证通常通过ActionForm对象进行,该对象对应于用户界面的表单。当用户提交表单...

    struts2官方例子7-表单验证 xml形式的验证

    总结起来,Struts2的XML表单验证是通过创建XML文件定义验证规则,然后在Action类中处理数据,通过框架自动进行验证并返回错误信息。这种方式使得验证逻辑与业务逻辑分离,提高了代码的可维护性和复用性。对于大型...

    struts2总结大全

    本总结将深入探讨Struts2的核心概念、关键功能和实用技术,以帮助开发者全面理解并熟练运用这一框架。 一、Servlet模板 在Struts2中,Servlet模板是一种处理请求和响应的方式。它通过拦截器链对请求进行处理,然后...

    Struts2输入校验总结

    综上所述,Struts2的输入校验机制不仅支持基本的手动校验,还提供了高度可配置和扩展的验证框架,使得开发者能够根据应用的具体需求,灵活地实现各种校验逻辑,从而提升应用程序的质量和用户体验。

    struts2 自定义验证程序的实现方法详解

    ### Struts2 自定义验证程序的实现方法详解 #### 一、Struts2 内建验证程序实现的分析 在探讨如何实现自定义验证程序之前,我们先来了解一下 Struts2 的内置验证机制。Struts2 提供了丰富的内置验证器(Validator...

    struts2 登陆注册 以及验证

    总结来说,Struts2提供了完善的框架和工具,使得开发登录注册功能变得容易,同时通过验证机制保证了数据的准确性和安全性。通过学习和实践这个主题,开发者可以掌握Struts2的核心概念和实际操作,提升在企业级应用...

    Struts2知识点总结

    以下是对Struts2知识点的详细总结: 1. **Struts2核心组件** - **FilterDispatcher**(或现在的`StrutsPrepareAndExecuteFilter`):这是Struts2的核心过滤器,它负责拦截请求,处理Action映射,并转发到相应的...

    struts2学习总结

    - **Struts2**提供了一套更加灵活的验证机制,支持注解、XML配置等多种验证方式,并且能够与业务逻辑分离,提高了代码的可读性和可维护性。 5. **配置文件:** - **Struts1**使用`struts-config.xml`文件进行配置...

    struts2验证框架

    ### Struts2 验证框架详解 #### 一、引言 在Web开发中,确保用户输入的有效性和正确性是至关重要的。Struts2作为一款流行的Java Web开发框架,提供了强大的验证功能来帮助开发者实现这一目标。本文将详细介绍Struts...

    struts2验证文档

    ### Struts2验证机制详解 #### 一、引言 在Web应用开发中,数据验证是确保应用程序稳定性和安全性的重要环节。Struts2框架提供了一套完善的验证机制,能够帮助开发者轻松实现对用户输入数据的有效性检查。本文将...

    Struts动态表单验证

    2. **表单验证的重要性** 表单验证是Web应用中必不可少的一环,用于确保用户提交的数据符合预设的规则,防止无效或恶意的数据进入系统。动态表单验证允许我们根据不同的场景或用户角色灵活地调整验证规则。 3. **...

    Struts2+Hibernate+Spring项目小结――Struts2部分总结

    在Struts2中,当服务端验证失败时,通常会将错误信息保存在ActionContext中,并通过ActionSupport类中的addFieldError方法添加到字段上。此时,为了保留页面的初始状态,我们可以采取以下策略: 1. 使用`...

    struts2验证实例

    在Struts2中,验证是处理用户输入数据的关键部分,确保数据的有效性和一致性。本实例将详细介绍如何在Struts2中实现简单的验证功能。 ### 1. Struts2验证概述 Struts2提供了一种灵活的验证机制,可以基于XML配置...

    Struts中多种验证总结

    总结起来,Struts提供了多种验证方式,包括ActionForm验证、XML配置的Validation框架、动态验证、Tiles验证、拦截器验证、第三方验证库集成以及客户端的AJAX验证。选择合适的方式取决于项目需求和团队偏好,重要的是...

Global site tag (gtag.js) - Google Analytics