struts2自定义类型转换器

 converter.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>  
    <%@ taglib uri="/struts-tags" prefix="s" %>  
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
    <html>  
      <head>  
        <title>Struts2中的转换器</title>  
      </head>  
      <body>  
    <h3>Struts2中的转换器</h3><hr/>  
    <form action="info.action" method="post">  
        <table>  
          
            <tr>  
                <td>登录名</td>  
                <td><input type="text" name="user.loginname"/></td>  
            </tr>  
            <tr>  
                <td>生日</td>  
                <td><input type="text" name="user.birthday"/></td>  
            </tr>  
            <tr>  
                <td>性别</td>  
                 <!--OGNL表达式:user属性的gender属性[由于是日期类型,程序中自定义有日期转换器]写法   -->  
                <td><input type="radio" name="user.gender" value="M" checked="checked"/>男<input type="radio" name="user.gender" value="F"/>女</td>  
            </tr>  
            <tr>  
                <td>考试成绩</td>  
                <td><input type="text" name="user.score"/></td>  
            </tr>  
            <tr>  
                <td colspan="2"><input type="submit" value=" 提交 "/></td>  
            </tr>  
        </table>  
          
        <!--OGNL表达式:元素类型为String类型的List的写法   -->  
        <input type="hidden" name="list[0]" value="张三"/>  
        <input type="hidden" name="list[1]" value="李四"/>  
        <input type="hidden" name="list[2]" value="王五"/>  
          
        <!--OGNL表达式:元素类型为user类型的LIST属性的写法   -->  
        <input type="hidden" name="userList[0].loginname" value="张三"/>  
        <input type="hidden" name="userList[1].loginname" value="李"/>  
        <input type="hidden" name="userList[2].loginname" value="王"/>  
          
        <!--OGNL表达式:元素类型为user类型的set属性的写法 -->  
        <input type="hidden" name="userSet.makeNew[0].loginname" value="xxx"/>  
        <input type="hidden" name="userSet.makeNew[1].loginname" value="yyy"/>  
        <input type="hidden" name="userSet.makeNew[2].loginname" value="ggg"/>  
           
         <!--OGNL表达式:map属性的写法   -->  
         <input type="hidden" name="map['jolin']" value="caiyilin"/>  
         <input type="hidden" name="map['jay']" value="zhoujielun"/>  
            
           <!--OGNL表达式:Tel属性的写法   -->  
         <input type="hidden" name="tel" value="010-66298878"/>  
    </form>  
      </body>  
    </html>

 info.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>  
    <%@ taglib uri="/struts-tags" prefix="s" %>  
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
    <html>  
      <head>  
        <title>显示提交的数据</title>  
      </head>  
      <body>  
    <h3>显示提交的数据</h3><hr/>  
        <table>  
            <tr>  
                <td>登录名</td>  
                <td><s:property value="user.loginname"/> </td>  
            </tr>  
            <tr>  
                <td>生日</td>  
                <td><s:date name="user.birthday" format="yyyy-MM-dd HH:mm:ss"/></td>  
            </tr>  
            <tr>  
                <td>性别</td>  
                <td><s:property value="user.gender"/> </td>  
            </tr>  
            <tr>  
                <td>考试成绩</td>  
                <td><s:property value="user.score"/></td>  
            </tr>  
            <tr>  
                <td>电话号</td>  
                <td><s:property value="tel"/></td>  
            </tr>  
            <tr>  
                <td colspan="2"><input type="button" value=" 返回 " οnclick="history.go(-1);" /></td>  
            </tr>  
        </table>  
      
    <hr/><s:debug/>  
      </body>  
    </html>

 error.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>  
    <%@ taglib uri="/struts-tags" prefix="s" %>  
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
    <html>  
      <head>  
        <title>出现内部错误</title>  
      </head>  
      <body>  
    <h3>出现内部错误</h3><hr/>  
      
    <s:actionerror/>  
      </body>  
    </html>


总结
Struts2中的类型转换器
  1) Struts2中内置了一些常用的类型转换器:可以把客户端提交的String数据转换成对应类型的数据。
     a) 基本类型
     b) java.util.Date:
     c) 数组和列表
  2) 自定义类型转换器:
     a) 继承自org.apache.struts2.util.StrutsTypeConverter类
  public abstract Object convertFromString(Map context, String[] values, Class toClass);
        context:OGNL上下文的Map对象
        values :需要转换的字符串数组
        toClass:要转换的目标类型
  public abstract String convertToString(Map context, Object o);
         context:OGNL上下文的Map对象
         o:需要转换的对象
     b) 注册:以全局方式
                    在应用程序的classpath下创建一属性文件,名为:xwork-conversion.properties
                    文件内容:待转换类型的全限定名=类型转换器类的全限定名
  3) 转换Set:
     0) Action中的Set属性需要进行初始化:如:
        private Set<User> userSet = new HashSet<User>();
     a) 添加针对某个Action的转换器配置文件:ActionName-conversion.properties 如:
        UserAction-conversion.properties
        
     b) 在这个文件中添加:Action的Set属性的相关配置
        Element_属性名=Set中的元素类型的全限定名                 #指定Set中的元素类型
        KeyProperty_属性名=Set中的元素类型中的某个属性  #指定Set的索引字段
                   如下示例:
        Element_userSet=com.qiujy.domain.User
        KeyProperty_userSet=id
        
     c) JSP页面: <input type="text" name="Set属性名.makeNew[0].属性名"/>
                    如:<input type="text" name="userSet.makeNew[0].loginname"/>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值