struts2自定义类型类型转换

struts2中的自定义类型转换有分两种

(0).编写类型转换文件
该文件应该继承SrtutsTypeConverter,当继承后,自动会有两个重写的方法,一个是convertFromString(从客户端到服务器),一个是convertToString(从服务器到客户端),我们要做的就是在这两个方法中编写你想要转换的类相应的代码.

(1).局部转换
局部转换就是在你需要类型转换的action的同目录下建立格式如:xxx-conversion.properties的文件
xxx代表你的action的名字,在properties中加入:
yyy=zzz
yyy代表action中你需要转换的成员变量,(注意yyy不是类型),zzz代表转换yyy所用的java(要写完整的相对路径如:com.test.converter.PointConverter)
局部转换就是针对某一个action;如果action中有多个同类型的成员变量,则需要写多行.如有

Point point,point1,point2;

则需要在xxx-conversion.properties中加入
point=com.test.converter.PointConverter
point1=com.test.converter.PointConverter
point2=com.test.converter.PointConverter

显然这样是很麻烦的.这时候我们就要用到全局转换了;
(2).全局转换
全局转换是针对某一个类的.我们需要在src目录下建立xwork-conversion.properties.
加入
yyy=zzz
yyy代表你的类型的相对路径,如com.test.bean.Point
zzz代表转换yyy所用的java,这里跟局部转换是一样的.如(com.test.converter.PointConverter)

finished!

Ps:struts2中还有一个很方便的功能.在下面全部不用用到任何转换.
如果有一个bean
public class Point {
 private int x;
 private int y;
 
 public int getX() {
  return x;
 }
 public void setX(int x) {
  this.x = x;
 }
 public int getY() {
  return y;
 }
 public void setY(int y) {
  this.y = y;
 }
 @Override
 public String toString() {
  // TODO Auto-generated method stub
  return ""+x+"and"+y;
 }
}

在你的jsp中可以这样写:
  <s:form action="haha">
    <s:textfield name="point.x" label="Point.x"></s:textfield>
    <s:textfield name="point.y" label="Point.y"></s:textfield>
    <s:submit value="submit"></s:submit>
  </s:form>

注意两个textfield中的name.
然后在haha.java的action中有一个类型为Point的成员变量point.
在输出的页面中,我们可以写
    <s:property value="point"/>

然后point会调用它的类中的toString方法.
所以我们就需要在Point类中重写toString方法.如上面所见;
或者,我们也可以这样写:
    <s:property value="point.x"/>
    <s:text name="and"></s:text>
    <s:property value="point.y"/>
得到的结果是一样的.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值