歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

自定義Struts2類型轉換器

一、自定義類型轉換器

創建一個類繼承com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter或繼承該類的子類org.apache.struts2.util.StrutsTypeConverter

  1. public class DateConversion extends StrutsTypeConverter {  
  2.   
  3.     @Override  
  4.     public Object convertFromString(Map context, String[] values, Class toClass) {  
  5.         // TODO Auto-generated method stub   
  6.         SimpleDateFormat sf=new SimpleDateFormat("yyyyMMdd");  
  7.         if(toClass==Date.class){  
  8.             try {  
  9.                 return sf.parse(values[0]);  
  10.             } catch (ParseException e) {  
  11.                 // TODO Auto-generated catch block   
  12.                 e.printStackTrace();  
  13.             }  
  14.         }else if(toClass==String.class){  
  15.             return sf.format(values[0]);  
  16.         }  
  17.         return null;  
  18.     }  
  19.   
  20.     @Override  
  21.     public String convertToString(Map context, Object o) {  
  22.         // TODO Auto-generated method stub   
  23.         return null;  
  24.     }  
  25. }  
1、將上面的類型轉換器注冊為局部類型轉換器:

在Action類所在的包下放置ActionClassName-conversion.properties文件,ActionClassName是Action的類名,後面的-conversion.properties是固定寫法,PersonAction-conversion.properties:

屬性名=類型轉換器全類名;

  1. # syntax: <propertyName> = <converterClassName>  
  2. birthday=org.han.util.DateConversion  

或者封裝對象:

  1. public class PersonConversion extends StrutsTypeConverter {  
  2.   
  3.     @Override  
  4.     public Object convertFromString(Map context, String[] values, Class toClass) {  
  5.         SimpleDateFormat sf = new SimpleDateFormat("yyyyMMdd");  
  6.         Person per = new Person();  
  7.         per.setName(values[0]);  
  8.         try {  
  9.             per.setBirthday(sf.parse(values[1]));  
  10.         } catch (ParseException e) {  
  11.             // TODO Auto-generated catch block   
  12.             e.printStackTrace();  
  13.         }  
  14.         return per;  
  15.     }  
  16.   
  17.     @Override  
  18.     public String convertToString(Map context, Object o) {  
  19.         // TODO Auto-generated method stub   
  20.         return null;  
  21.     }  
  22. }  
action:
  1. @Namespace("/")  
  2. public class PersonAction extends ActionSupport{  
  3.     private Person per;  
  4.     public Person getPer() {  
  5.         return per;  
  6.     }  
  7.   
  8.     public void setPer(Person per) {  
  9.         this.per = per;  
  10.     }  
  11.   
  12.     @Action(value="person",results={@Result(name="success",location="/index.jsp")})  
  13.     public String execute() throws Exception {  
  14.         // TODO Auto-generated method stub   
  15.         System.out.println(per.getBirthday());  
  16.           
  17.         return SUCCESS;  
  18.     }  
  19.    
  20. }  
jsp:
  1. <body>  
  2.   <form action="person.action" method="post">  
  3.     <input type="text" name="per" />  
  4.     <input type="text" name="per" />  
  5.     <input type="submit" value="提交"/>  
  6.   </form>  
  7. </body>  
  1. per=org.han.util.PersonConversion  

2、將上面的類型轉換器注冊為全局類型轉換器:
在src下放置xwork-conversion.properties文件,該文件內容為:

待轉換的類型全類名=類型轉換器全類名;

  1. java.util.Date=org.han.util.DateConversion  
Copyright © Linux教程網 All Rights Reserved