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="point1" label="点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="point1" label="点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方法
添加如下代码:
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.运行。
文章来源: blog.csdn.net,作者:fengda2870,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/fengda2870/article/details/2937811
- 点赞
- 收藏
- 关注作者
评论(0)