首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

一篇搞懂 Struts2 類型轉換:內建、自訂與錯誤處理

     編輯:Java 相關知識

HTTP 請求參數皆為字串,Struts2 需將其轉換為 Java 強類型 (int, Date, 自訂類別等)。框架提供內建轉換器並支援自訂擴充。

內建類型轉換器

涵蓋基本類型與包裝類型:boolean/Boolean, char/Character, int/Integer, long/Long, float/Float, double/Double, Date。自動處理字串→目標類型,失敗則拋出異常。

自訂類型轉換器開發步驟

1. 繼承 StrutsTypeConverter (推薦)

public class PointConverter extends StrutsTypeConverter {
    @Override
    public Object convertFromString(Map context, String[] values, Class toType) {
        String[] xy = values[0].split(",");
        Point p = new Point();
        p.setX(Integer.parseInt(xy[0]));
        p.setY(Integer.parseInt(xy[1]));
        return p;
    }
    @Override
    public String convertToString(Map context, Object o) {
        Point p = (Point) o;
        return "[" + p.getX() + "," + p.getY() + "]";
    }
}

2. 註冊轉換器

  • Action 級:建立 ActionName-conversion.properties 放在 Action 同包,內容 point=com.example.PointConverter (屬性名=轉換器類)。
  • 全域級:建立 xwork-conversion.properties 放在 src 根目錄,內容 com.example.Point=com.example.PointConverter (目標類型=轉換器類)。

轉換錯誤處理與訊息客製化

Struts2 的 conversionError 攔截器會將轉換失敗封裝為 FieldError 放入 ActionContext。

方式一:全域訊息覆蓋

  1. 建立 Mess.properties (src 根目錄),覆蓋 xwork.default.invalid.fieldvalue:
    xwork.default.invalid.fieldvalue="{0}" 參數轉換失敗。
  2. struts.xml 設定:<constant name="struts.custom.i18n.resources" value="Mess"/>

方式二:Action 級訊息

建立 ActionName.properties,鍵值:invalid.fieldvalue.屬性名=提示訊息。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved