Struts2类型转换

Servlet用表单提交非字符串数据的时候,需要进行类型转换:如提交 age

String strAge = req.getParameter("age");

int age=0;

if(strAge!=null){

age=Integer.parseInt(strAge);

}

 

struts2 中,常见数据类型 struts2 已经自动的进行了类型转换。不需要进行手动转换。

 

在某些情况下,有自定义的类型时,struts2 不能完成类型转换,那么需要手动转换,如果该自定义类型使用的频率较高时,手动转换重复代码将会增多--使用 struts2 提供的类型转换器来进行类型转换。

 

案例:a,b

不进行类型转换的处理方式:

Jsp页面代码:

<body>

<form action="point.action" method="post">

a:<input type="text" name="point.a"/><br>

b:<input type="text" name="point.b"/><br>

<input type="submit" value="提交"/>

</form>

</body>

 

Action 代码:

public class PointAction {

private Point point;

public String execute(){

System.out.println(point.getX()+"-----"+point.getY());

return Action.SUCCESS;

}

public Point getPoint() {

return point;

}

public void setPoint(Point point) {

this.point = point;

}

}

 

Struts.xml 配置

<package name="default" namespace="/" extends="struts-default">

<action name="point" class="cn.sxt.action.PointAction">

<result>/index.jsp</result>

</action>

</package>

 

这种方式不符合数学的表示形式;采用类型转换的处理:

使用类型转换的步骤:

a) 编写类型转换器--继承 StrutsTypeConverter 类

b) 编写 xwork-conversion.properties 的配置文件,放于 src 下;内容为

要转换的类型=类型转换器

使用类型转换来完成上述案例:

类型转换器:

public class PointConverter extends StrutsTypeConverter{

/**

* 将表单提交的字符串数据 转换为 指定自定义类型

* context 是 ActionContext

* values 要进行类型转换的字符串数组

* toClass 被转换的类型

* */

@Override

public Object convertFromString(Map context, String[] values,

Class toClass) {

String value=values[0];

Point point = new Point();

String x = value.substring(1,value.indexOf(","));

String

y=value.substring(value.indexOf(",")+1,value.length()-1);

System.out.println("x="+x);

System.out.println("y="+y);

point.setX(Integer.parseInt(x));

point.setY(Integer.parseInt(y));

return point;

}

/**

* 将定义类型 转换为字符串在前台页面显示----通过 ognl 表达式将会使

用该方法进行转换

* context ---actionContext

* o 要转换的对象

* */

@Override

public String convertToString(Map context, Object o) {

Point point = (Point)o;

return "("+point.getX()+","+point.getY()+")";

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值