zoukankan      html  css  js  c++  java
  • Struts2(七)

    以下内容是基于导入struts2-2.3.32.jar包来讲的

    1.xml验证

      Struts2提供了验证器,实现了通用的验证逻辑。例如:

    非空验证器、长度验证器、日期验证器、email验证器等。具体定义位置:

    xwork-core-2.3.4.1.jar包下/com/opensymphony/xwork2/validator/validators/default.xml

    适合以下情况:

    1.验证字段较多

    2.验证逻辑简单且较多重复

    3.xml文件过多,验证一个方法,需要有一个xml文件对应

    控制器:

     1 package com.rong.web.action;
     2 
     3 import com.opensymphony.xwork2.ActionSupport;
     4 import com.rong.web.entity.Student;
     5 
     6 public class MyAction extends ActionSupport {
     7     private static final long serialVersionUID = -351587239525292420L;
     8     private Student student;
     9     public Student getStudent() {
    10         return student;
    11     }
    12     public void setStudent(Student student) {
    13         this.student = student;
    14     }
    15     @Override
    16     public String execute() throws Exception {
    17         System.out.println("execute!!!");
    18         return SUCCESS;
    19     }
    20 }

    xml配置文件:

    xml文件要与Action类在同一个目录

    xml命名规则:

    验证整个Action类所有的方法

      xml文件命名为:类名-validation.xml

      在官网下载的struts项目下搜索validation,找到Login-validation.xml文件,把该文件内容复制到MyAction-validation.xml文件中,修改文件内容:

    <!DOCTYPE validators PUBLIC
            "-//Apache Struts//XWork Validator 1.0.2//EN"
            "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
    
    <validators>
        <!-- 要验证的属性 -->
        <field name="student.sname">
            <!-- 字符串非空验证器,type是验证器名字,可在default.xml文件查找name -->
            <field-validator type="requiredstring">
                    <message>学生名字不允许为空!!!</message>
            </field-validator>
            <!-- 字符串长度验证器 -->
            <field-validator type="stringlength">
                <!-- 参数名字name可在com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator查看 -->
                <param name="minLength">6</param>
                <param name="maxLength">18</param>
                <message>长度区间必须在6-18之间</message>
            </field-validator>
        </field>
        <!-- 可以继续添加field标签,添加属性验证-->
       <!--  <field name="student.sage">
            <field-validator type="int">
                    <message>xxxxxx</message>
            </field-validator>
        </field> -->
    </validators>
    <?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>
        <package name="default" namespace="/" extends="struts-default" >
            <action name="check" class="com.rong.web.action.MyAction">
                <result>/one.jsp</result>
                <!-- 验证信息错误时,框架固定返回input视图 -->
                <result name="input">/index.jsp</result>
            </action>
        </package>
    </struts>
    <form action="${pageContext.request.contextPath }/check" method="post">
            <input type="text" name="student.sname"/>
            <!-- 获取后台返回的校验信息 -->
            <!-- 显示指定错误信息 -->
            <s:fielderror key="#student.sname"></s:fielderror>
            <!-- 显示指定错误信息 -->
            <s:fielderror fieldName="student.sname"></s:fielderror>
            <!-- 可以显示所有的错误信息 -->
            <s:fielderror></s:fielderror>
            <input type="submit" value="登录"/>
        </form>

    验证某个方法

    只需要把xml文件名更改为:类名-该方法的访问路径-validation.xml

      例如:验证指定方法
        命名规则: ActionClassName- ActionName -validation.xml

        ActionClassName是某个Action类的类名

        ActionName是某个方法的访问路径

        UserAction-user_add-validation.xml

        user是<action name="user_*">

    xml约束:略。

    2.国际化

    国际化原理:

      本地化信息

      资源文件: 基本名字_语言名_国家码.properties

              基本名.properties(默认)

      加载资源文件

      显示资源文件信息

    资源文件:

      中文:resource_zh_CN.properties

      英文:resource_en_US.properties

      默认:resource.properties

      存储在同一Action所在包下!

    struts.properties放在src根目录下,配置信息会覆盖原有的default.properties的配置信息

     

          

  • 相关阅读:
    EntityFramework优缺点
    领导者与管理者的区别
    七个对我最好的职业建议(精简版)
    The best career advice I’ve received
    Difference between Stored Procedure and Function in SQL Server
    2015年上半年一次通过 信息系统项目管理师
    Difference between WCF and Web API and WCF REST and Web Service
    What’s the difference between data mining and data warehousing?
    What is the difference between a Clustered and Non Clustered Index?
    用new创建函数的过程发生了什么
  • 原文地址:https://www.cnblogs.com/57rongjielong/p/8195756.html
Copyright © 2011-2022 走看看