• 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
  • 相关阅读:
    Git push 出错 [The remote end hung up unexpectedly]
    [Git高级教程(二)] 远程仓库版本回退方法
    git分支与版本管理、版本回退、冲突解决记录
    上传本地代码到gitHub过程详解
    如何用git将项目代码上传到github
    Git pull 强制覆盖本地文件
    Git忽略规则.gitignore梳理
    composer本地安装文档
    服务器通过微信公众号Token验证测试的代码(Python版)
    转载自lanceyan: 一致性hash和solr千万级数据分布式搜索引擎中的应用
  • 原文地址:https://www.cnblogs.com/AnswerTheQuestion/p/6582562.html
Copyright © 2020-2023  润新知