本文章适合初学类型转换的东西

首先是官方说的几个东西
首先是JSP页面的部分代码,当然也可以是HTML,反正是表示层的东西就对了
<body>
<form action="convert">
用户名:
<input type="user" />
</form>
</body>
然后是struts.xml中的配置,当然,官方说了,这个配置可以再web.xml中
<struts>
   
<package name="test" extends="struts-default" namespace="/">
<!-- namespace默认是/,所以可以不写,不过我有这个习惯 -->
        
<action name="convert" class="test.ConvertAction">
            
<result name="success">/Result.jsp</result>
        
</action>
   
</package>
</struts>
然后我们需要一个叫做ConvertAction位于test包中的类
public class ConvertAction implements Action{
    
 private User user//这个对象的引用必须有setter和getter,因为我是手工硬编码,没有复制,所以就不累述了
     
public void setUser(User value){
         
this.username = value;
    }

    
     
public User getUser(){
        
this.username;
     }

     
     
public String execute(){
         
//..Action我准备什么都不做
          return SUCCESS;
     }

}
我们继续,之后是一个properties文件
ConvertActuin-conversion.properties
这个文件一定要放到ConvertAction所在的包里
命名的就不在这里累述了,因为不论不是李刚的书也好,Struts的指南也好都有讲,唯一区别就是前一个是中文,后一个是英文罢了
之后这个文件里我们需要添加一个属性
#这个TestConverter之后我会给出代码
username=test.TestConverter

      package test; 
      /**
       *这个类有几种写法,我也就不累述了
       */
public
 class TestConverter implements TypeConverter{
          
public Object convertValue(Map<String, Object> arg0, Object arg1,
            Member arg2, String arg3, Object arg4, Class arg5) 
{
        
return new User();//这里只需要返回一个User对象就可以了,怎么处理是你的喜好
      }

}
到此,我们的Converter就配置完了,那么我们可以进行一些测试了,唯一要注意的东西就是你的Action里应该有的username属性,因为这个属性的丢失会导致convertValue的不调用

------------------------------------------------------------------------------------------------------------------------------------
下面我说下我的总结
第一,在JSP也就是表示层必须有一个user属性
第二,在Action中必须有一个user
第三,在properties中必须有user的定义
为什么呢?原理是Struts在设置user时会去寻找properties文件,如果找到就进行转换,否则就直接赋值