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

    转换器

    应用场景:输出界面/输出界面 与 对象/数据库不是一一对应的关系。或者格式不一样。
    例如:输入身份证号,自动解析出生日或其它信息。

    要实现一个拦截器总共需要做以下几步:

    1.:做转换器的类。 --- 继承StrutsTypeConverter.

    2.:配置。

    第一种:全局配置。在src根下,建立xwork-conversion.properties文件。配置好实体类与转换类的二者完全限定名对应关系。(指定当遇到那一个实体类,就找到相应的转换类)
    第二种:局部配置。在action的包里面,建立Action类名-conversion.properties文件(StudentAction-conversion.properties)。
    配置好成员变量与转换类的对应关系。stu=com.itnba.maya.util.StudentConverter。(指定当遇到这个对象时,就找到相应的转换类)

    (2者选其一即可)

    示例:

    实体类

    package com.maya.convert;
    
    public class User {
        private String name;
        private String card;
        private String birthday;
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getCard() {
            return card;
        }
        public void setCard(String card) {
            this.card = card;
        }
        public String getBirthday() {
            return birthday;
        }
        public void setBirthday(String birthday) {
            this.birthday = birthday;
        }    
    }

    struts.xml配置

    <package name="convert" namespace="/convert" extends="struts-default">       
            <action name="*_*" class="com.maya.convert.{1}Action" method="{2}">
                <result>{1}_{2}.jsp</result>
            </action>  
            <action name="Convert_insert" class="com.maya.convert.ConvertAction" method="insert">
                <result type="chain">Convert_findAll</result>
            </action>
    </package>

    ActionSupport

    package com.maya.convert;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    public class ConvertAction extends ActionSupport {
        private User user;    
        public User getUser() {
            return user;
        }
    
        public void setUser(User user) {
            this.user = user;
        }
    
        public String add(){
            return SUCCESS;
        }
        
        public String insert(){
            return SUCCESS;
        }
        
        public String findAll(){
            return SUCCESS;
        }
    }

    JSP页面

    转换器的类

    package com.maya.convert;
    
    import java.util.Map;
    
    import org.apache.struts2.util.StrutsTypeConverter;
    
    public class UserConvert extends StrutsTypeConverter {
    
        //对应题目,我们是要解析用户输入的身份证号,所以用convertFromString()这个个方法就可以了
        @Override
        public Object convertFromString(Map arg0, String[] arg1, Class arg2) {//一般我们只用中间的String[]
            // 将接收到的字符串转换成对象输出出去(页面向数据库进行操作,但与数据库不匹配时)
            String s=arg1[0];
            String year=s.substring(6, 10);
            String mounth=s.substring(10,12);
            String day=s.substring(12,14);
            
            User user=new User();
            user.setCard(s);
            user.setBirthday(year+"年"+mounth+"月"+day+"日");
            return user;
        }
    
        @Override
        public String convertToString(Map arg0, Object arg1) {//一般只用Object
            // 将接收到的对象已字符串的形式输出出去(数据库月页面显示不匹配时)
            return null;
        }    
    }

    全局配置:

    com.maya.convert.User=com.maya.convert.UserConvert

    局部配置:

    user=com.maya.convert.UserConvert
  • 相关阅读:
    操作系统的磁盘结构、磁盘管理、磁盘调度算法
    ArrayList源码解析--值得深读
    深入理解static、volatile关键字
    7:高阶张量操作
    6:统计属性
    5:张量的基本运算
    4.1张量的操作(broadcasting维度自动扩张,拼接与拆分)
    4:张量操作
    3:索引与切片
    2:pytorch的基本数据类型以及张量的创建
  • 原文地址:https://www.cnblogs.com/AnswerTheQuestion/p/6582562.html
Copyright © 2011-2022 走看看