熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

struts2類型轉化器詳解(帶例子)

2013-11-23 20:30:37  來源: Java開源技術 

  Struts有兩種類型轉化器

  一種局部一種全局

  如何實現

  第一步定義轉化器

  第二部注冊轉化器

  下面做一個局部類型轉化器的實例

  我們在上面一片日志說過有個變量date類型的只有我們輸入格式為yyyyMMdd的日期類型才會有效否則則無效那麼我就需要一個類型轉化當輸入為yyyyMMdd的日期類型也能有效該怎麼做?

  這時候我們需要一個自定義的類型轉化器

  首先我們定義一個類型轉化器

  我們的類為DateTypeChangejava

  package comfish;

  import javatextSimpleDateFormat;

  import javautilDate;

  import javautilMap;

  import comopenversionimplDefaultTypeConverter;

  publicclass DateTypeChange extends DefaultTypeConverter{//首先得繼承默認轉化器類

  @Override

  public Object convertValue(Map<String Object> context Object value

  Class toType) {//第二個參數是你的要轉化的數據就是我們下面testJava的brithday屬性的值第三個參數是你傳進來的數的值

  SimpleDateFormat format=new  SimpleDateFormat(yyyyMMdd);//創建一個日期類型的排版格式

  try {

  if(toType==Dateclass){

  String[] parm=(String[])value;

  return formatparse(parm[]);

  }elseif(toType==Stringclass){

  Date date=(Date)value;

  return formatformat(date);

  }

  } catch (Exception e) {

  }

  returnnull;

  }

  }

  類型轉化器書寫完畢接著應該寫一個注冊文件關聯類型轉化器和你想轉化屬性的那個類(這個文件寫在轉化器的同一個包下)

  書寫格式要轉化的屬性的類型(不加包名)+conversionproperties

  文件裡面寫brithday=comfishDateTypeChange

  順便把其他幾個testJava也寫上

  package comfish;

  import javautilDate;

  publicclass Test {

  private String name;

  private String id;

  private Date brithday;

  public Date getBrithday() {

  returnbrithday;

  }

  publicvoid setBrithday(Date brithday) {

  thisbrithday = brithday;

  }

  public String getName() {

  returnname;

  }

  publicvoid setName(String name) {

  thisname = name;

  }

  public String getId() {

  returnid;

  }

  publicvoid setId(String id) {

  thisid = id;

  }

  public String execute(){

  returnsuccess;

  }

  }

  接著Strutsxml

  <package name=fish namespace=/test extends=strutsdefault>

  <action name=redfish class=comfishTest method=execute>

  <param name=name>xxxx</param>

  <result  name=success>/indexjsp</result>

  </action>

  然後MyJspJSP

  <form action=/strutstest/test/redfishaction>&nbsp;

  <input type=text  name=username>

  <input type=text name=id>

  <input type=text name=brithday>

  <input type=submit value=確定>

  最後indexJSP

  name=${name}<br>

  id= ${id}  <br>

  brithday=${brithday}<br>

  這時我們在indexJSP頁面中輸入yyyyMMdd類型的日期類型時struts也能轉化成日期格式處理了

  當然如果你想寫全局轉化器

  只要改properties文件

  將他移動到webinf/classess下命名是

  xwrokconversionproperties

  在裡面的內容

  轉化的類型(有包名的)=轉化器(包名的)

  所以是這麼寫

  JavautilDate=comfishDateTypeChange

  意思是說對於所有date類型我都可以轉化為這種格式處理


From:http://tw.wingwit.com/Article/program/Java/ky/201311/28598.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.