開(kāi)始學(xué)習(xí)struts2(三)
struts2局部類(lèi)型轉(zhuǎn)換
需求為:在頁(yè)面的文本框輸入一個(gè)x、y坐標(biāo),之間用","隔開(kāi),Action中有一個(gè)Point類(lèi)型的屬性,Point類(lèi)里面有兩個(gè)字段,分別是x,y,int型,要求當(dāng)頁(yè)面提交時(shí)將文本框中的字符串轉(zhuǎn)換成Point對(duì)象,當(dāng)Action返回到頁(yè)面時(shí)將Point轉(zhuǎn)換成字符串顯示
1、首先做一個(gè)jsp用于輸入和提交:point.jsp
<s:textfield name="point" label="Point"></s:textfield>
<s:textfield name="point.x" label="Point.X"></s:textfield>
<s:textfield name="point.y" label="Point.Y"></s:textfield>
<s:submit label="submit"></s:submit>
</s:form>
2、再建一個(gè)用于顯示的jsp-converter.jsp
<s:property value="point"/><br>
<s:property value="point.x"/><br>
<s:property value="point.y"/><br>
</body>
3、Action類(lèi) ConverterAction
private Point point;
public Point getPoint() {
return point;
}
public void setPoint(Point point) {
this.point = point;
}
public String execute()throws Exception {
return "success";
}
}
4、struts.xml
class="com.test.struts2.action.ConverterAction">
<result name="success">/converter.jsp</result>
<result name="input">/point.jsp</result>
</action>
5、轉(zhuǎn)換類(lèi) ConverterPoint
@Override
public Object convertValue(Map context, Object value, Class toType) {
if(Point.class == toType){
String[] params = (String[])value;
params = params[0].split(",");
Point point = new Point();
point.setX(Integer.parseInt(params[0]));
point.setY(Integer.parseInt(params[1]));
return point;
}else if(String.class == toType){
Point point = (Point)value;
return "x=" + point.getX() + ",y=" + point.getY();
}
return super.convertValue(context, value, toType);
}
}
6、配置轉(zhuǎn)換
在ConverterAction 類(lèi)的同一目錄下定義屬性文件ConverterAction-conversion.properties,注意文件名,-conversion.properties為固定不變,ConverterAction為Action的名字,文件內(nèi)容:
point=com.test.struts2.action.ConverterPoint
Ok了,這樣就完工了
posted on 2009-01-05 13:12 豬 閱讀(292) 評(píng)論(0) 編輯 收藏 所屬分類(lèi): 學(xué)習(xí)java