Struts2類型轉換

Struts2在進行輸入校驗與業務邏輯調用之前會先對界面傳來的數據進行類型轉化。像Action類中定義的int,String等基礎類型的屬性,只要其屬性名與JSP界面上的name屬性對應的值相同,則 Struts2自動會將其轉換。然而Struts2不會轉化對象類型。必須程序員自定義對象類型的轉換。

以下以Point點對象爲例來自定義對象類型的轉換。

此例我們在input.jsp中通過3個文本框輸入3個座標,返回到output.jsp中希望用一個文本框輸出3個座標。

前臺表單:input.jsp


struts.xml中配置:

 

處理類:
PointAction.java

 

  

 

定義類型轉換的配置:

Action類所在的同一包下建立PointAction-conversion.properties文件,(命名規則:Action類名-conversion.properties)

寫入如下一句即可:point=com.test.converter.PointConverter

相當於告知Struts2,若在PointAction類中碰到point這個非基礎屬性,則採用com.test.converter.PointConverter類中的方法來轉換

自定義的類型轉換類PointConverter.java如下:

 

 

 

Point.java

 

 

 

 

執行流程如下:當表單請求提交到PointAction類中時,Struts2通過各個屬性對應的setter方法將屬性值設置上去,一旦發現要設置的是個對象(此處爲Point對象),就去 PointAction- conversion.properties文件中尋找是否有自定義的Point對象類型的轉換。這裏我們在PointAction- conversion.properties中配置了point=com.test.converter.PointConverter,就告訴了 Struts2,遇到setPoint(Point point)不會轉時採納PointConverter類中定義的方法來轉換。PointConverter類中第一個方法將輸入的 3個字符串類型的座標轉換爲一個集合類型後返回,返回值就是PointAction中setPoint要設置的List<Point> point。第二個方法是將集合類型轉換爲字符串類型返回,當output.jsp中輸出座標時,實際上調用了PointAction的 List<Point> getPoint()方法,而此方法返回的List<Point>被換成了String類型,所以正常輸出。

發佈了43 篇原創文章 · 獲贊 1 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章