歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Struts2自定義類型轉換器

Struts2自定義類型轉換器

日期:2017/3/1 10:33:48   编辑:Linux編程

Struts對於用戶提交的很多格式都進行了轉換,比如Date類型,如果用戶輸入2012-12-12這種格式,那麼Struts2內部的轉換器就會自動的轉化成對應Date類型輸出,但是如果輸入是20121212這種格式或則其他的類型,那麼就需要自己定義一個類型轉換器了,下面來介紹一下,首先,Struts2的類型轉換器一共有兩種,一個是針對某一個具體的Action的局部類型轉換器,另一個是針對整個項目而言的全局轉換器,先來說說局部類型轉換器,首先需要寫一個類繼承DefaultTypeConverter

代碼如下

  1. package com.bird.type.converter;
  2. import java.text.ParseException;
  3. import java.text.SimpleDateFormat;
  4. import java.util.Date;
  5. import java.util.Map;
  6. import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter;
  7. public class DateTypeConverter extends DefaultTypeConverter {
  8. @Override
  9. public Object convertValue(Map<String, Object> context, Object value,@SuppressWarnings("rawtypes") Class toType) {
  10. SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
  11. if(toType == Date.class){
  12. String[] params = (String[]) value;
  13. try {
  14. return dateFormat.parse(params[0]);
  15. } catch (ParseException e) {
  16. // TODO Auto-generated catch block
  17. e.printStackTrace();
  18. }
  19. }else if(toType == String.class){
  20. Date date = (Date) value;
  21. return dateFormat.format(date);
  22. }
  23. return null;
  24. }
  25. }

toType代表要轉換成什麼類型,這裡可以實現雙向轉換,而且Struts由於要兼容表單裡面的復選框,所以參數帶過來的就會是一個String數組,帶一個參數的直接使用數組0就可以了。

先看一下Action代碼

  1. package com.bird.action;
  2. import java.util.Date;
  3. public class HelloWorld {
  4. private Date birthday;
  5. public Date getBirthday() {
  6. return birthday;
  7. }
  8. public void setBirthday(Date birthday) {
  9. this.birthday = birthday;
  10. }
  11. public String execute(){
  12. return "success";
  13. }
  14. public String addUI(){
  15. return "success";
  16. }
  17. }

然後下面的工作就是注冊這個轉換器,對於局部轉換器,需要構建一個名稱為HelloWorld-conversion.properties,其中HelloWorld為Action的簡單名稱,後面的conversion是指定的必須,這個配置文件內容如下

[java]
  1. birthday=com.bird.type.converter.DateTypeConverter

這樣一個局部類型轉換器就算是完成了

下面說一下全局類型轉換器,它和局部類型轉換器唯一的不同就是配置文件的不同,這個配置文件需要放在WEB-INF下面的classes文件下面,對於eclipse,就是放在src文件目錄下面就行了。配置文件的名稱為xwork-conversion.properties,這個名稱是不能修改的,然後內部內容為

  1. java.util.Date=com.bird.type.converter.DateTypeConverter

這樣就對整個的項目,所有的Date類型進行轉換

Copyright © Linux教程網 All Rights Reserved