Structs2的类型转换—局部类型转换

Ognl强大的表达式语言,在导入项目的时候我们导入了ognl.jar包,内有TypeConverter类,struct主要依赖于他进行类型转换。

例子

 

input.jsp

<%@
taglib
prefix="s"
uri="/struts-tags"%>

<h3><font
color="red">使用都逗号将点的两个坐标分隔开</font></h3>

    <s:form
action="/new/pointConverter">

        <s:textfield
name="point"
label="point"></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
loabel="submit"></s:submit>

    </s:form>

 

对应的坐标实体

Point.Java

package com.test.bean;

 

public
class Point {

    private
int
x;

    private
int
y;

    public
int getX() {

        return
x;

    }

    public
void setX(int x) {

        this.x = x;

    }

    public
int getY() {

        return
y;

    }

    public
void setY(int y) {

        this.y = y;

    }

}

 

 

 

自定义的类型转换类PointConverter,继承DefaultTypeConverter,重写convertValue

方法

package com.test.convertr;

 

import
java.lang.reflect.Member;

import java.util.Map;

 

import com.test.bean.Point;

 

import ognl.DefaultTypeConverter;

/**

* 自定义的转换类

* @author Administrator

*

*/

public
class PointConverter extends DefaultTypeConverter {

 

    @Override

    public Object convertValue(Map context, Object value, Class toType) {

        if (Point.class==toType) {

            Point point=new Point();

            String[] str=(String[])value;

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

            

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

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

            

            point.setX(x);

            point.setY(y);

            

            return point;

        }

        

        if (String.class==toType) {

            Point point=(Point)value;

            int x=point.getX();

            int y=point.getY();

            

            String result="[x="+x+",y="+y+"]";

            return result;

            

        }

        

        return
null;

    }

}

 

写与表单相对应的PointAction类

package com.test.action;

 

import java.util.Date;

 

import com.opensymphony.xwork2.ActionSupport;

import com.test.bean.Point;

 

public
class
PointAction
extends ActionSupport{

    private Point point;

    private
int
age;

    private String username ;

    private Date birthday;

    public Point getPoint() {

        return
point;

    }

    public
void setPoint(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 getBirthday() {

        return
birthday;

    }

    public
void setBrithday(Date birthday) {

        this.birthday = birthday;

    }

    @Override

    public String execute() throws Exception {

        return
SUCCESS;

        

    }

}

告诉struct 我的Point属性使用我自己写的转换类转换。

在Action目录下建立PointAction-conversion.properties文件

point=com.test.convertr.PointConverter

 

配置structs.xml

<action
name="pointConverter"
class="com.test.action.PointAction">

    <result
name="success">/output.jsp</result>

</action>

 

建立output.jsp

<%@ taglib prefix="s" uri="/struts-tags"%>

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

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

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

    date :<s:property
value="date"/>

Structs2笔记③--局部类型转换案例的更多相关文章

  1. struts2学习笔记(3)——struts2的局部类型转换

    今天又学到了一个新的东西,就是struts2的类型转换. 为什么要类型转换? 今天我就要传一个点的坐标给你,保存时用一个自定义的Point类来保存. 因为在表单里面传过去的是字符串,如“12,23”, ...

  2. [Struts2学习笔记] -- 自定义类型转换

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...

  3. 4-1数据类型转换的基本概念 & 4-2 & 4-3数据类型转换案例 & 4-4习题

    4-1数据类型转换的基本概念 253是int类型的,赋值给长整型的n 这种就是强制的类型转换 自动类型转换又叫做饮食类型转换,因为他的转换我们是看不到的 实线表示无数据丢失的 虚线在转换时, doub ...

  4. Struts2学习笔记(七)——类型转换

    1.自动类型转换 Struts2内部提供大量类型转换器,用来完成数据类型转换问题: String和boolean.Boolean:完成字符串与布尔值之间的转换 String和char.Characte ...

  5. JavaScript 笔记(2) -- 类型转换 & 正则表达 & 变量提升 & 表单验证

    目录:  typeof, null, undefined, valueOf() 类型转换 正则表达式 错误: try, catch, throw 调试工具 变量提升 strict 严格模式 使用误区 ...

  6. swift学习笔记之-类型转换

    //类型转换 import UIKit /*类型转换(Type Casting) 1.类型转换 可以判断实例的类型,也可以将实例看做是其父类或者子类的实例. 2.类型转换使用 is 和 as 操作符实 ...

  7. Struts2 学习笔记19 类型转换 Part1

    现在来说一说类型转换,提到类型转换其实我们之前早已经用过了,在url传递参数的时候,我们传递过来的参数其实都是String类型的,在显示的时候都自动转换了,像这种简单的转换很好理解,我们要说的是,转换 ...

  8. R︱sparkR的安装与使用、函数尝试笔记、一些案例

    本节内容转载于博客: wa2003 spark是一个我迟早要攻克的内容呀~ ------------------------------------- 一.SparkR 1.4.0 的安装及使用 1. ...

  9. (C/C++学习笔记) 七. 类型转换

    七. 类型转换 ● 隐式类型转换 隐式类型转换 implicit type conversions #include<iostream> using namespace std; void ...

随机推荐

  1. linux文件系统初始化过程(2)---挂载rootfs文件系统

    一.目的 本文主要讲述linux3.10文件系统初始化过程的第一阶段:挂载rootfs文件系统. rootfs是基于内存的文件系统,所有操作都在内存中完成:也没有实际的存储设备,所以不需要设备驱动程序 ...

  2. Oracle 下马观花看redo

    ----------------------------------------- --Lerning Content :Oracle 下马观花看redo --Author :如人饮水冷暖自知 --版 ...

  3. snapkit equalto和multipliedby方法

    最近在使用snapkit过程中遇到一个问题,在github上搜索之后发现另外一个有趣的问题 frameImageContainer.snp.makeConstraints({ (make) in ma ...

  4. 【OS X系统】Xcode中搭建Python环境。

    虽然按照网上教程一步一步来,但还是遇到了几个错误点,现整理出来,主要是自己做个笔记,同时也希望能帮助到其他像我一样第一次在Xcode上搭建Python环境的人.首先感谢原作者:https://zhid ...

  5. K9F2G08U0C NAND FLASH 的地址分析

    计算物理地址 K9F2G08U0C是samsun出产的FLASH,容量为256MB 页--Page: (2K + 64)Byte 块--Block: (128K + 4K)Byte 128 / 2 = ...

  6. 自学tensorflow——2.使用tensorflow计算线性回归模型

    废话不多说,直接开始 1.首先,导入所需的模块: import numpy as np import os import tensorflow as tf 关闭tensorflow输出的一大堆硬件信息 ...

  7. Java 中的extends 和 implements

    初学Java语言, 代码中的extends和implements让我感到很迷惑,现在终于弄明白它们之间的区别和用法了. //定义一个Runner接口 public inerface Runner { ...

  8. [2016北京集训试题6]mushroom-[bitset]

    Description Solution bitset是个好东西啊..强行压位什么的真是够orz. 由于所有的蘑菇上房间的长相是一样的,我们针对每个房间,算出它到根节点的bitset和以它为根的子树的 ...

  9. re 模块错误 error: bad character range

    下午,看到堆栈的内容.于是上机实验了一番 >>> bds = '10+6/5-4*2' # 数学运算表达式 想用 findall 把运算符号提取出来 >>> imp ...

  10. 4552: [Tjoi2016&Heoi2016]排序

    4552: [Tjoi2016&Heoi2016]排序 链接 分析: 因为只询问一次,所以考虑二分这个数.显然是没有单调性的,但是我们可以二分所有大于等于mid的数中,是否有满足条件的x(而不 ...