Struts2中的類型轉換器

在servlet中若是咱們前臺提交的String類型的數據與咱們後臺所須要的數據不一致時,這時咱們須要進行手動的進行轉換,例如:session

String strAge = req.getParameter("age");
        if(strAge != null){
            age = Integer.parseInt(strAge);
        }

而在struts12中比較常見的類型轉換struts2經過攔截器已經幫咱們完成了,不須要咱們進行手動的進行轉換,而一些自定義的類型,仍是須要咱們本身進行手動轉換,而這種轉換,咱們不該該放在action中,由於當咱們須要轉換的同一類型的數據較多時,這樣將會增長不少的代碼量,而正確的實現方式是寫一個轉換類,這個類繼承抽象類StrutsTypeConverter,實現裏面沒有實現的方法。而後編寫一個xwork-conversion.properties的配置文件,文件內容是:須要轉換的類型=繼承了StrutsTypeConverter的轉換類。這樣也就完成了類型的轉換,例如:app

public class PointConverter extends StrutsTypeConverter {
 
    @Override
    public Object convertFromString(Map context, String[] values, Class toClass) {
        // TODO Auto-generated method stub
        String value = values[0];
        System.out.println(value);
        Point point = new Point();
        String x = value.substring(1,value.indexOf(","));
        String y = value.substring(value.indexOf(",")+1,value.indexOf(")"));
        point.setX(Integer.parseInt(x));
        point.setY(Integer.parseInt(y));
        
        return point;
    }
   erride
    public String convertToString(Map context, Object o) {
        // TODO Auto-generated method stub
        Point point = (Point)o;
        return "("+point.getX()+","+point.getY()+")";
    }ide

}spa

注意:運用ognl表達式在前臺進行取數據是經過值棧來獲取數據,即須要經過convertToString()這個方法進行獲取數據,而使用EL表達式的取值方式是:page->response->session->application.這樣的遍歷方式進行取值,因此不須要經過convertToString()該方法,若是取的是一個對象的話則是直接去調用的toString方法。對象

相關文章
相關標籤/搜索