Struts2学习笔记5:Struts2类型转换续二

Struts2学习笔记5:Struts2类型转换续二

绑定:struts2-core-2.0.11.2.jar中类的源代码地址E:/Java/struts-2.0.11.2/src/core/src/main/java

新建一个版本,并在tomcat的server.xml文件中声明

<Context path="/struts" docBase="F:/eclipse/workspace/struts/WebROOT" reloadable="true" />

1.struts2 将要进行自定义类型转换的点数据从1个增加到3个

 1.修改input.jsp文件,添加与修改代码如下:

<s:textfield name="point1label="点1"></s:textfield>

<s:textfield name="point2" label="点2"></s:textfield>

<s:textfield name="point3" label="点3"></s:textfield>

 2.修改PointAction.java文件

private Point point1;

private Point point2;

private Point point3;

并生成它们的get与set方法。

 3.修改PointAction-conversion.properties文件

point1 = converter.PointConverter

point2 = converter.PointConverter

point3 = converter.PointConverter

注:等号两边可以有空格

 4.修改output.jsp文件。

point1:<s:property value="point1"/><br/>

point2:<s:property value="point2"/><br/>

point3:<s:property value="point3"/><br/>

 5.运行。

2.struts3 进行全局的类型转换

 1.在src目录中新建配置文件。

注:文件名的格式固定为 xwork-conversion.properties

输入内容的格式如下:

要转化的类的对象所对应的类的全名(包名)处理类型转化的类

在文件中输入内容如下:

model.Point=converter.PointConverter

 2.使用“#”注释掉PointAction-conversion.properties中的代码

 3.运行。

3.struts4 使用Struts2中内部类中的方法进行自定义类型转换,用到的类StrutsTypeConverter

 1.新建PointConverter2.java文件继承StrutsTypeConverter类,代码如下:

package converter;

import java.util.Map;

import model.Point;

import org.apache.struts2.util.StrutsTypeConverter;

public class PointConverter2 extends StrutsTypeConverter {

@SuppressWarnings("unchecked")

public Object convertFromString(Map context, 

String[] values, Class toClass) {

Point point = new Point();

String[] str = values[0].split(",");

int x = Integer.parseInt( str[0] );

int y = Integer.parseInt( str[1] );

point.setX( x );

point.setY( y );

return point;

}

@SuppressWarnings("unchecked")

public String convertToString(Map context, Object o) {

Point point = (Point)o;  //向下类型转换

int x = point.getX();

int y = point.getY();

StringBuilder str = new StringBuilder();

str.append( "[ x = " );

str.append( x );

str.append( " , y = ");

str.append( y );

str.append( " ]" );

return str.toString();

}

}

说明:重写的两个方法内容基本上是对PointConverter中的方法进行的分解

 3.修改xwork-conversion.properties文件

model.Point=converter.PointConverter2

 4.运行。

4.struts5 增加集合类型,使用范型

 1.修改input.jsp文件

<s:textfield name="point1label="点1"></s:textfield>

    <s:textfield name="point2label="点2"></s:textfield>

<s:textfield name="point3label="点3"></s:textfield>

说明:灰色的数字为要删除的

 2.修改PointAction.java文件

删除以下代码:

private Point point1;

private Point point2; 

private Point point3;

以及它们的get和set方法

添加如下代码:

private List<Point> point;

以及添加它的get和set方法。

 3.新建PointConverter3.java文件,添加如下代码

package converter;

import java.util.ArrayList;

import java.util.List;

import java.util.Map;

import model.Point;

import org.apache.struts2.util.StrutsTypeConverter;

public class PointConverter3 extends StrutsTypeConverter {

@SuppressWarnings("unchecked")

public Object convertFromString(Map context, 

String[] values, Class toClass) {

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

for( String value : values ){

String[] valueParam = value.split( "," );

Point p = new Point();

int x = Integer.parseInt( valueParam[0] );

int y = Integer.parseInt( valueParam[1] );

p.setX( x );

p.setY( y );

point.add( p );

}

return point;

}

@SuppressWarnings("unchecked")

public String convertToString(Map context, Object o) {

List<Point> point = (List<Point>) o;

StringBuilder str = new StringBuilder();

str.append( "[ " );

int num = 1;

for( Point p : point ){

int x = p.getX();

int y = p.getY();

str.append( "  NO(" );

str.append( num++ );

str.append( ") " );

str.append( "x = " );

str.append( x );

str.append( " , y = " );

str.append( y );

}

str.append( " ]" );

return str.toString();

}

}

 4.注释xwork-conversion.properties中的代码

 5.修改pointaction-conversion.properties中的代码,添加语句

point = converter.PointConverter3

 6.修改output.jsp文件中的代码

用下面一句代码:

point:<s:property value="point"/><br/>

替换以下代码:

point1:<s:property value="point1"/><br/>

point2:<s:property value="point2"/><br/>

point3:<s:property value="point3"/><br/>

 7.运行。

5.truts6 直接设置要进行类型转换的字段值

 1.修改input.jsp文件

用下面两句代码:

<s:textfield name="point.x" label="点1的X坐标"></s:textfield>

<s:textfield name="point.y" label="点1的Y坐标"></s:textfield>

替换以下代码:

<s:textfield name="point" label="点1"></s:textfield>

    <s:textfield name="point" label="点2"></s:textfield>

<s:textfield name="point" label="点3"></s:textfield>

 2.修改PointAction.java文件

删除:

private List<Point> point;以及与这个字段有关的get和set方法。

添加:

private Point point;以及与这个字段有关的get和set方法。

 3.注释PointAction.properties中的point = converter.PointConverter3 语句

 4.重写Point类中的toString()方法,代码如下:

public String toString() {

StringBuilder str = new StringBuilder();

str.append( " [ " );

str.append( "x = " );

str.append( x );

str.append( " , y = " );

str.append( y );

str.append( " ]" );

return str.toString();

}

 5.运行。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值