`
whp0731
  • 浏览: 174841 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

struts2学习之四、类型转换2

阅读更多
<h3><font color="red">使用x坐标,y坐标分两行</font></h3>
   
   <s:form action="pointConverter">
   
   <s:textfield name="point.x" label="x"></s:textfield>
   <s:textfield name="point.y" label="y"></s:textfield>
   <s:textfield name="age" label="age"></s:textfield>
   <s:textfield name="username" label="username"></s:textfield>
   <s:textfield name="date" label="birthday"></s:textfield>
   
   <s:submit label="submit"></s:submit>
   
   </s:form>

 一、当输入页面有多个Point类的对象时,point,point2,point3
那么相应的输入页面,结果页面,PointAction,PointAction-conversion.properties都改成三个。
point=com.test.converter.PointConverter
point2=com.test.converter.PointConverter
point3=com.test.converter.PointConverter

 

二、那么如果有十个呢?不是需要在配置文件中写十个,比较麻烦
有以下方法:全局的类型的类型转换
位置Src目录下,不在和相应的Action在一起了
名字叫xwork-conversion.properties
内容:com.test.bean.Point=com.test.converter.PointConverter
等号左边表示的需要转化的类名(含包名),右侧是转化类。

 

三、此时举例的转换类PointConverter2.java(基于Struts2的)更加简洁。一般正式项目中用的也是这个。
//继承StrutsTypeConverter并且重写convertFromString()和convertToString方法。

package com.test.converter;
import java.util.Map;
import org.apache.struts2.util.StrutsTypeConverter;
import com.test.bean.Point;
public class PointConverter2 extends StrutsTypeConverter
{

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

 @Override
 public String convertToString(Map context, Object o)
 {
  Point point = (Point)o;
  
  int x = point.getX();
  int y = point.getY();
  
  String result = "[ x = " + x + " , y = " + y + " ]";
  
  return result;
 }

}

 

四、转换集合类型 List<Point>
1)即在PointAction.java类为

package com.test.action;

import java.util.Date;
import java.util.List;

import com.opensymphony.xwork2.ActionSupport;
import com.test.bean.Point;

public class PointAction extends ActionSupport
{

private List<Point> point; 
 private int age;
 private String username;
 private Date date;
 public List<Point> getPoint()
 {
  return point;
 }

 public void setPoint(List<Point> point)
 {
  this.point = point;
 }
 
 public int getAge()
 {
  return age;
 }

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

 public String getUsername()
 {
  return username;
 }

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

 public Date getDate()
 {
  return date;
 }

 public void setDate(Date date)
 {
  this.date = date;
 }

 @Override
 public String execute() throws Exception
 {
  return SUCCESS;
 }

}

 

 


2)此时的转化类可修改为PointConverter3.java

package com.test.converter;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.struts2.util.StrutsTypeConverter;
import com.test.bean.Point;

public class PointConverter3 extends StrutsTypeConverter
{

 @Override
 public Object convertFromString(Map context, String[] values, Class toClass)
 {
  List<Point> list = new ArrayList<Point>();
  
  for(String value : values)
  {
   Point point = new Point();
   
   String[] paramValues = value.split(",");
   
   int x = Integer.parseInt(paramValues[0]);
   int y = Integer.parseInt(paramValues[1]);
   
   point.setX(x);
   point.setY(y);
   
   list.add(point);
  }
  
  return list;
 }

 @Override
 public String convertToString(Map context, Object o)
 {
  List<Point> list = (List<Point>)o;
  
  StringBuilder sb = new StringBuilder();
  
  sb.append("[ ");
  
  int number = 0 ;
  
  for(Point point : list)
  {
   ++number;
   
   int x = point.getX();
   int y = point.getY();
   
   sb.append(number).append(" x = ").append(x).append(" , y = ").append(y).append("  ");
  }
  
  sb.append("]");
  
  return sb.toString();
 }

}

 

3)input.jsp

<s:form action="pointConverter">
   
   <s:textfield name="point" label="point"></s:textfield>
   <s:textfield name="point" label="point2"></s:textfield>
   <s:textfield name="point" label="point3"></s:textfield>
   <s:textfield name="age" label="age"></s:textfield>
   <s:textfield name="username" label="username"></s:textfield>
   <s:textfield name="date" label="birthday"></s:textfield>   
   <s:submit label="submit"></s:submit> 
   </s:form>

 

4)output.jsp

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

  

五、将x坐标,y坐标分两行输入页面
1)input.jsp

2)此时就不用任何类型转化了,就可以自动准确输出了

3)采用这种方式“.”对象.属性的方式的话,Point必须提供一个不带参数的构造方法
其实strut2内部采用了反射的机制!不建意用这个方式,表单太罗嗦了。

分享到:
评论

相关推荐

    struts2学习笔记3数据类型转换

    struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换

    struts2简单实例(类型转换)

    在这个"struts2简单实例(类型转换)"中,我们将探讨Struts2如何处理不同类型的数据转换,以及如何创建一个简单的演示应用。 首先,让我们理解什么是类型转换。在Web应用程序中,用户通过表单提交的数据通常是字符...

    struts2学习笔记三(第3讲.Struts2的类型转换)

    在本篇“Struts2学习笔记三”中,我们将聚焦于Struts2的类型转换这一核心特性。类型转换在处理用户提交的数据时非常关键,它允许Struts2自动将请求参数转换为Java对象的属性。 在Struts2中,类型转换主要由`...

    struts2简单实例(类型转换方法对比)

    本实例主要探讨了在Struts2中进行类型转换的三种方法:局部类型转换、全局类型转换以及大量数据类型的转换。对于初学者来说,理解并掌握这些转换方式至关重要,因为它们能够帮助我们处理用户输入的数据,并将其转化...

    struts2数据类型转换器

    这篇博客“Struts2数据类型转换器”可能深入探讨了这个主题,虽然具体的细节无法在此给出,但我们可以根据Struts2中数据类型转换的工作原理来展开讨论。 在Java Web开发中,用户通过表单提交的数据通常是字符串形式...

    struts2学习笔记四(第4讲.Struts2的类型转换续)

    在"Struts2学习笔记四(第4讲.Struts2的类型转换续)"中,我们将会深入探讨Struts2中的类型转换机制,这是一个核心特性,用于处理Action类属性与HTTP请求参数之间的数据类型转换。 在HTTP请求中,数据通常是字符串...

    Struts2类型转换(一)----常规类型,自定义类型,错误处理

    Struts2是一个强大的MVC框架,它在处理Web应用程序时提供了许多便利,其中包括类型转换功能。类型转换是将用户输入的数据自动转化为服务器端处理所需的类型,这样可以避免手动转换带来的繁琐工作。本篇文章将深入...

    struts2(1-7)源码 struts2学习入门 源码学习

    struts2 将要进行自定义类型转换的点数据从1个增加到3个 struts3 进行全局的类型转换 struts4 使用Struts2中内部类中的方法进行自定义类型转换,用到的类StrutsTypeConverter struts5 增加集合类型,使用范型 ...

    struts2 学习重点笔记

    - **优势**:使用 Struts2 可以显著提高开发效率,因为它能够处理很多基础任务,如数据接收、类型转换、验证等。 **1.2 Struts2 架构** - **MVC 架构**:Struts2 采用经典的 MVC 架构,分为模型(Model)、视图(View)...

    struts2注册转换器

    Struts2是一个强大的MVC(模型-视图-控制器)框架,广泛应用于Java Web开发中。...这个案例提供了一个很好的学习点,帮助开发者更好地理解和利用Struts2框架的类型转换机制,提高代码的健壮性和可维护性。

    struts2学习心得

    9. **全局类型转换配置**:为了统一管理不同类型转换的规则,Struts2允许在`struts.xml`配置文件或`xwork-conversion.properties`文件中定义全局的类型转换策略,从而避免在每个Action中重复配置相同的转换规则。...

    struts2的类型转换器授课教案和例子源码

    通过这两课时的学习,你应该能够熟练掌握Struts2类型转换器的使用,并能根据业务需求自定义自己的转换器。这些知识对于进行Java web开发,特别是使用Struts2框架的工作来说,是非常关键的。理解并运用好类型转换器,...

    struts2中文学习文档

    WebWork在被Struts2吸收之前,已经具备了许多先进的特性,如动态类型转换、拦截器和结果类型等。这些特性后来都被融入到了Struts2中,使得Struts2不仅继承了WebWork的优点,还在此基础上进行了改进和扩展,成为了...

    struts2 全局类型转换器.rar

    通过这个压缩包,开发者可以学习到如何自定义Struts2的类型转换器,提高应用的灵活性和可维护性。同时,结合博文链接(https://llxhna.iteye.com/blog/1067851)可能会提供更深入的讲解和示例代码,帮助理解并实践这...

    Struts2之类型转换器的使用案例struts002

    本案例"Struts2之类型转换器的使用案例struts002"深入探讨了如何自定义类型转换器以及在实际应用中的使用。 首先,Struts2框架提供了一系列内置的类型转换器,可以自动处理基本类型和常见类型的数据转换,如String...

    struts2自定义类型转换、拦截器实例练习

    本实例练习旨在帮助你深入理解Struts2的工作原理,特别是自定义类型转换和拦截器的使用。 首先,让我们详细探讨Struts2的MVC架构。在MVC模式中,Model代表业务逻辑,View负责展示数据,而Controller则是两者之间的...

    struts2 转换器

    在实际应用中,Struts2转换器不仅可以处理简单的类型转换,还能进行数据验证。例如,你可以在转换器中检查日期是否符合特定格式,或者数值是否在指定范围内。这样,你可以在数据到达业务逻辑之前就捕获并处理潜在的...

    第2讲 --Struts2的类型转换

    总结来说,Struts2的类型转换机制是其核心功能之一,它有效地解决了HTTP请求数据与Action属性之间的类型不匹配问题。理解并掌握Struts2的类型转换,对于提升Java web应用的开发效率和质量具有重要意义。通过学习和...

    struts2类型转换深入总结

    这篇博文深入探讨了Struts2中的类型转换机制,通过分析源码和使用工具,帮助开发者更好地理解和应用这一特性。 在Struts2中,类型转换主要由`ValueStack`和`TypeConverter`接口负责。`ValueStack`是一个对象栈,它...

    struts2学习 源码

    8. **类型转换**:Struts2自动处理HTTP请求参数到Action字段的类型转换,减轻了开发者的工作负担。 9. **异常处理**:Struts2提供了全局的异常处理机制,可以统一处理应用中的异常,提高代码的健壮性。 10. **国际...

Global site tag (gtag.js) - Google Analytics