java框架之struts2数据类型转换(2)

19 篇文章 0 订阅
9 篇文章 0 订阅

1.局部类型转换



Point.java

package com.dx.pojo;

public class Point {
private Integer x;
private Integer y;
public Integer getX() {
return x;
}
public void setX(Integer x) {
this.x = x;
}
public Integer getY() {
return y;
}
public void setY(Integer y) {
this.y = y;
}

@Override
public String toString() {
return "Point [x=" + x + ", y=" + y + "]";
}


}


1.新建自定义类型转换类,

继承   ognl.DefaultTypeConverter
或继承com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter
package com.dx.convert;

import java.util.Map;
import com.dx.pojo.Point;
import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter;


public class PointConvert extends DefaultTypeConverter{
public Object convertValue(Map context, Object value, Class toType) {
if (Point.class == toType) {
String[] val = (String[]) value;
String pointVal = val[0];
String[] xy = pointVal.split(",");


Point p = new Point();
p.setX(Integer.valueOf(xy[0]).intValue());
p.setY(Integer.valueOf(xy[1]).intValue());


return p;

else if (String.class == toType) {
Point p = (Point) value;
float x = p.getX();
float y = p.getY();

return "[X = " + x + "  Y = " + y + "]";
}
return null;
}


}

普通代码如何能识别类型转换类,就需要创建配置文件:
LoginrAction-conversion.properties
在MyEclipse 开发环境中,我们只需要在项目Action通包路径下 位置创建配置文件:
LoginAction 对应的Action 的名字
-conversion.properties 固定写法


局部资源文件配置内容

需要转换的属性point = 需要用哪个自定义的类来转换。

PointConvert.java

package com.dx.convert;


import java.util.Map;


import com.dx.pojo.Point;
import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter;


public class PointConvert extends DefaultTypeConverter{
public Object convertValue(Map context, Object value, Class toType) {
if (Point.class == toType) {
String[] val = (String[]) value;
String pointVal = val[0];
String[] xy = pointVal.split(",");


Point p = new Point();
p.setX(Integer.valueOf(xy[0]).intValue());
p.setY(Integer.valueOf(xy[1]).intValue());


return p;

else if (String.class == toType) {
Point p = (Point) value;
Integer x = p.getX();
Integer y = p.getY();

return "[X = " + x + "  Y = " + y + "]";
}
return null;
}
}


LoginAction.java

package com.dx.action;
import java.util.Date;
import com.dx.pojo.Point;
import com.opensymphony.xwork2.ActionSupport;


public class LoginAction extends ActionSupport{

private static final long serialVersionUID = 1L;

private Point point;
private String username;
private Integer age;
private Date birthday;


public Point getPoint() {
return point;
}

public void setPoint(Point point) {
this.point = point;
}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public Integer getAge() {
return age;
}


public void setAge(Integer age) {
this.age = age;
}


public Date getBirthday() {
return birthday;
}


public void setBirthday(Date birthday) {
this.birthday = birthday;
}

public String execute()throws Exception{
System.out.println(point +","+username+","+age+","+birthday);
return "success";
}

}


访问请求表单:form.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>index.jsp</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">    
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
  </head>
  
  <body>
  <s:form action="login" method="post">
  <s:textfield name="point" label="点座标:"></s:textfield>
  <s:textfield name="username" label="用户名:"></s:textfield>
  <s:textfield name="age" label="年龄:"></s:textfield>
  <s:textfield name="birthday" label="出生日期:"></s:textfield>
  <s:submit value="提交"></s:submit>
</s:form>
  </body>
</html>


2.全局类型转换

全局转换配置文件名固定:xwork-conversion.properties,与struts.xml 处同一路径,在src 下

全局资源文件配置内容
com.dx.pojo.Point=com.dx.convert.PointTypeConverter
左边:所有Action 依赖Point 对象做为属性;
右边:自定义转换类。

对象集合使用
如Jsp 中多个点座标,name=“” 名称一样;
Action 中使用泛型集合
private List<Point> point; 
有getter、setter 方法;
数据转换类

List<Point> listPoint = new ArrayList<Point>();

类型转换配置文件声明。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值