資源描述:
《strutS類型轉(zhuǎn)換》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、Struts—第四章Struts類型轉(zhuǎn)換續(xù)1回顧Struts2有幾種類型轉(zhuǎn)換Struts2在什么情況下需要自定義類型轉(zhuǎn)換Struts2如何進行自定義類型轉(zhuǎn)換回顧新的要求要求在input.jsp頁面中增加三個點的輸入,如何實現(xiàn)?解決辦法(Converter工程)在input.jsp頁面中增加另兩個point文本框在PointAction中增中這兩個點的映射在屬性文件中增加這兩個屬性的映射在out.jsp文件中增加這兩個點的輸出新的問題如果此時有兩個頁面input.jsp及l(fā)ogin.jsp都需要有Point的輸入,如何處理?解決辦法1增加另一個Action;在該
2、Action路徑下創(chuàng)建一個相對于這個action的屬性文件優(yōu)點:可以對前面的信息進行復用,簡單易行缺點:如果action很多的話,會以增加很多文件解決辦法2使用全局類型轉(zhuǎn)換類型轉(zhuǎn)換局部類型轉(zhuǎn)換(針對單個action來進行的)全局類型轉(zhuǎn)換(針對工程來進行的)注冊自定義類型轉(zhuǎn)換器注冊自定義類型轉(zhuǎn)換器有兩種方法局部類型轉(zhuǎn)換器:只有特定的Action才可以使用注冊方法:在Action所在的包中建立properties文件,文件名格式:Action類名-conversion.properties,內(nèi)容如下:inver=com.aptech.conversition.In
3、tArrayConverter其中:inver是action屬性名,全局類型轉(zhuǎn)換器:所有Action都可以使用注冊方法:在classpath下建立名為xwork-conversion.properties的文件,內(nèi)容如下:目標類型(全限定名)=轉(zhuǎn)換器全限定名9使用全局類型轉(zhuǎn)換(重點)屬性文件的要求:位置上:在struts.xml文件同一路徑下創(chuàng)建屬性文件文件名稱:xwork-conversion.properties文件內(nèi)容要轉(zhuǎn)換的類=實現(xiàn)類型轉(zhuǎn)換的類例:com.test.bean.Point=com.test.converter.PointActionCon
4、verter注意:所有類名要寫全稱即包名+類名屬性文件的注釋#思考,上一節(jié)課如何實現(xiàn)轉(zhuǎn)換類?publicclassPointActionConverterextendsDefaultTypeConverter{publicObjectconvertValue(Mapcontext,Objectvalue,ClasstoType){if(Point.class==toType){Pointp=newPoint();String[]str=(String[])value;String[]param=str[0].split(",");intx=Integer.pa
5、rseInt(param[0]);inty=Integer.parseInt(param[1]);p.setX(x);p.setY(y);returnp;}if(String.class==toType){Pointp=(Point)value;intx=p.getX();inty=p.getY();Stringresult="x="+x+"y="+y;returnresult;}returnnull;}}更簡單的辦法使用StrutsTypeConverter抽象類PointActionConverter2.javapublicclassPointAction
6、Converter2extendsStrutsTypeConverter{publicObjectconvertFromString(Maparg0,String[]arg1,Classarg2){Pointpoint=newPoint();String[]param=(String[])arg1[0].split(",");intx=Integer.parseInt(param[0]);inty=Integer.parseInt(param[1]);point.setX(x);point.setY(y);returnpoint;}PointActionCon
7、verter2.javapublicStringconvertToString(Maparg0,Objectarg1){Pointpoint=(Point)arg1;intx=point.getX();inty=point.getY();Stringresult="x="+x+"y="+y;returnresult;}}上面方法有什么好處?不需要自己做判斷,是String到自定義類還是自定義類到String直接重寫兩個方法即可新需求publicclassPointActionextendsActionSupport{Pointpoint;Pointpoint2
8、;Pointpoint3;intage