zoukankan      html  css  js  c++  java
  • Struts2转换器

    应用场景:输入界面/输出界面 与 对象/数据库不是一一对应的关系。或者格式不一样。
    例如:

    输入矩形面积,自动解析出长和宽。

    输入身份证号,自动解析出生日或其它信息。

    第一步:做转换器的类。 --- 继承StrutsTypeConverter

    第二步:配置

    第一种全局配置:在src根下,建立xwork-conversion.properties文件。配置好实体类与转换类的二者完全限定名对应关系。

    文件名不能错。

    打开点击add

    name是实体类的完全限定名,value是转换类的完全限定名。

    这样全局配置就完成了,转换器就可以使用了。

    第二种局部配置:在action包里面建Action类名-conversion.properties文件(如:StudentAction-conversion.properties),配置好成员变量与转换类的对应关系。

    name:stu是action中的成员变量,value:com.itnba.maya.util.StudentConverter是转换类的完全限定名。

    这样局部配置就完成了,这一个action就可以使用转换器了。

     ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

     例:输入身份证号,自动解析生日

    一、在model层建一个Student的实体类,并生成get,set

    package com.itnba.maya.model;
    
    public class Student {
        private String name;
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getIdNumber() {
            return idNumber;
        }
        public void setIdNumber(String idNumber) {
            this.idNumber = idNumber;
        }
        public String getBirthday() {
            return birthday;
        }
        public void setBirthday(String birthday) {
            this.birthday = birthday;
        }
        private String idNumber; 
        private String birthday;
    }

    二、在控制场写一个StudentAction类,

    package com.itnba.maya.controller;
    
    import com.itnba.maya.model.Student;
    import com.opensymphony.xwork2.ActionSupport;
    
    public class StudentAction extends ActionSupport {
        private Student stu;
        public Student getStu() {
            return stu;
        }
        public void setStu(Student stu) {
            this.stu = stu;
        }
        
        public String input(){
            return SUCCESS;
        }
        public String show(){
            
            return SUCCESS;
        }
    }

    三、在web-content中建一个Student的文件夹,然后建两个方法对应的jsp

    四、写一个继承自StrutsTypeConverter的Student转换类,重写里面的convertFromString方法

    package com.itnba.maya.util;
    
    import java.util.Map;
    import org.apache.struts2.util.StrutsTypeConverter;
    import com.itnba.maya.model.Student;
    
    public class StudentConverter extends StrutsTypeConverter {
    
        @Override
        public Object convertFromString(Map arg0, String[] arg1, Class arg2) {
            String s = arg1[0]; //输入的身份证号码 370303199411246014
            String year = s.substring(6, 10); //截取年份7-10位
            String month = s.substring(10, 12);//截取月份11,12位
            String date = s.substring(12, 14);//截取日13,14位
            
            Student stu = new Student();
            stu.setBirthday(year+"-"+month+"-"+date);//把截取的年月日进行拼接,放到Birthday里面去
            stu.setIdNumber(s);//把之前取到的身份证号再放到IdNumber中
            return stu;
        }
    
        @Override
        public String convertToString(Map arg0, Object arg1) {
            // TODO 自动生成的方法存根
            return null;
        }
    
    }

    五、在src文件夹下建一个xwork-conversion.properties的配置文件,配置好实体类和转换类的关系,name实体类,value转换类。

    六、测试

    我们只输入姓名和身份证号码两条信息,让转换器帮我们解析出生日

    提交后跳转页面,转换器自动帮我们解析出生日

  • 相关阅读:
    爬虫工程师分享:三步就搞定 Android 逆向
    爬虫工程师常用的 Chrome 插件
    Python 描述符(Descriptor) 附实例
    爬虫必备:Python 执行 JS 代码 —— PyExecJS、PyV8、Js2Py
    京东白条
    中国金融贷款整理
    接口文档管理工具YApi内网服务器搭建过程
    AWS申请图文及连接教程
    金融
    centos jdk 1.7升级到1.8后显示还是1.7
  • 原文地址:https://www.cnblogs.com/liyh123/p/6585654.html
Copyright © 2011-2022 走看看