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

举报
wh_bn 发表于 2021/12/16 00:24:06 2021/12/16
【摘要】 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文件中声明 ...

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.运行。

文章来源: blog.csdn.net,作者:fengda2870,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/fengda2870/article/details/2937811

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。