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的配置信息

 

      

原文地址:https://www.cnblogs.com/57rongjielong/p/8195756.html