Struts2学习笔记2-类型转换

第一种:使用DefaultTypeConverter转换
JSP页面

<s:textfield name="point" label="point"></s:textfield>
<s:textfield name="age" label="ages"></s:textfield>
<s:textfield name="username" label="usernames"></s:textfield>
<s:textfield name="date" label="birthdays"></s:textfield>

提交到相应的Action之后会读取和Action同目录的文件
ConverterAction-conversion.properties

point=com.langhua.converter.PointConverter

这样就会找到这个转换器

package com.langhua.converter;

import java.util.Map;

import com.langhua.bean.Point;

import ognl.DefaultTypeConverter;

public class PointConverter extends DefaultTypeConverter {

@Override
public Object convertValue(Map context, Object value, Class toType) {
//从页面转到服务器 toType表示要转化的类型
if(Point.class == toType){
//有可能收集的是数组所以是个String的数组
String[] values = (String[]) value;
String[] args = values[0].split(",");
Point point = new Point();
point.setX(Integer.parseInt(args[0]));
point.setY(Integer.parseInt(args[1]));
return point;
}
//从服务器转到页面
if(String.class == toType){
Point p = (Point) value;
return "["+p.getX()+","+p.getY()+"]";
}
return null;
}

}

调用里面的方法
然后跳转到相应的页面再调用里面的方法

<action name="pointconverter" class="com.langhua.action.ConverterAction">
<result name="success">/output.jsp</result>
</action>

最后在页面输出

point:<s:property value="point"/><br/>
age:<s:property value="age"/><br/>
username:<s:property value="username"/><br/>
brithday:<s:property value="date"/><br/>

第二种,全局转换
和struts.xml同目录下面加入这样一个文件
xwork-conversion.properties
里面指定

com.langhua.bean.Point=com.langhua.converter.PointConverter1

这样只要遇到Point类,就会使用后面的转换器转换

第三种使用struts2提供的类StrutsTypeConverter extends DefaultTypeConverter来转换
如下

package com.langhua.converter;

import java.util.Map;

import org.apache.struts2.util.StrutsTypeConverter;

import com.langhua.bean.Point;

public class PointConverter1 extends StrutsTypeConverter {

@Override
public Object convertFromString(Map context, String[] values, Class toClass) {
Point p = new Point();
String[] parms = values[0].split(",");
p.setX(Integer.parseInt(parms[0]));
p.setY(Integer.parseInt(parms[1]));
return p;
}

@Override
public String convertToString(Map context, Object o) {
Point p = (Point)o;
return p.toString();
}

}


第四种可以在页面写成这样

<s:textfield name="point.x" label="x"></s:textfield>
<s:textfield name="point.y" label="y"></s:textfield>

这样的话就不要什么配置文件了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值