程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> struts2類型轉化器詳解(帶例子)

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

編輯:關於JSP

Struts2有兩種類型轉化器:

一種局部,一種全局.

 

如何實現:

第一步:定義轉化器

第二部:注冊轉化器

 

 

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

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

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

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

我們的類為:DateTypeChange.java

package com.fish;

 

 

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.Map;

 

import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter;

 

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

 

    @Override

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

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

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

        try {

            if(toType==Date.class){

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

                return format.parse(parm[0]);

            }elseif(toType==String.class){

                Date date=(Date)value;

                return format.format(date);

            }

        } catch (Exception e) {

           

        }

       

        returnnull;

    }

 

 

}

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

書寫格式:“要轉化的屬性的類型(不加包名)”+conversion.properties。

文件裡面寫:brithday=com.fish.DateTypeChange 

 

順便把其他幾個test.Java也寫上:

package com.fish;

 

import java.util.Date;

 

 

publicclass Test {

private String name;

private String id;

private Date brithday;

 

public Date getBrithday() {

    returnbrithday;

}

publicvoid setBrithday(Date brithday) {

    this.brithday = brithday;

}

public String getName() {

    returnname;

}

publicvoid setName(String name) {

    this.name = name;

}

public String getId() {

    returnid;

}

publicvoid setId(String id) {

    this.id = id;

}

public String execute(){

   

    return"success";

}

}

接著:Struts2.xml:

<package name="fish" namespace="/test" extends="struts-default">

<action name="redfish" class="com.fish.Test" method="execute">

<param name="name">xxxx</param>

<result  name="success">/index.jsp</result>

</action>

然後:MyJsp.JSP

<form action="/struts2test4/test/redfish.action">&nbsp;

    <input type="text"  name="username">

    <input type="text" name="id">

    <input type="text" name="brithday">

<input type="submit" value="確定">

 

最後:index.JSP

name=${name}<br>

  id= ${id}  <br>

 brithday=${brithday}<br>

 

這時我們在index.JSP頁面中輸入yyyyMMdd類型的日期類型時,struts2也能轉化成日期格式處理了。

 

 

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

只要改properties文件:

將他移動到web-inf/classess下,命名是

xwrok-conversion.properties

在裡面的內容:

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

所以是這麼寫

Java.util.Date=com.fish.DateTypeChange

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved