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. php生成带自定义logo和带二维码跳转自定义地址的二维码

    index.php<?phpheader('Content-type:text/html;charset=UTF-8');// 指定允许其他域名访问header('Access-Control- ...

  2. Python的open函数文件读写线程不安全,logging模型文件读写线程安全!

    工作中遇到的问题:如何在多线程的程序中同时记录日志? 最初图省事,使用了最原始的open函数来写日志,因为开始使用的写文件模式的是追加('a'),发现并没有线程不安全的现象,各个线程的的日志信息都写入 ...

  3. hadoop--hive数据仓库

    一.hive概述 Hive是基于 Hadoop 的一个[数据仓库工具],可以将结构化的数据文件映射为一张数据库表,并提供简单的 sql 查询功能,可以将 sql 语句转换为 MapReduce 任务进 ...

  4. springboot快速入门(二)——项目属性配置(日志详解)

    一.概述 application.properties就是springboot的属性配置文件 在使用spring boot过程中,可以发现项目中只需要极少的配置就能完成相应的功能,这归功于spring ...

  5. Linux下开发python django程序(Session读写)

    1.登陆设置session信息 def loginsession(req): if req.method == 'POST': loginform = LoginForm(req.POST) if l ...

  6. 13-[CSS]-postion位置:相relative,绝absolute,固fixed,static(默认),z-index

    1.postion位置属性 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...

  7. 【LG3246】[HNOI2016]序列

    [LG3246][HNOI2016]序列 题面 洛谷 题解 60pts 对于每个位置\(i\),单调栈维护它往左第一个小于等于它的位置\(lp_i\)以及往右第一个小于它的位置\(rp_i\). 那么 ...

  8. Wannafly挑战赛24 B 222333

    小水题???但是时间限制异常鬼畜,跑了2min \(P | (2^m)*(3^n)-1\)的意思就是\(2^m 3^n = 1 (\text{mod }P)\) 设f[i]表示3^k=i的最小的k 然 ...

  9. jquery 直接访问图片路径

    jQuery("#img").attr("src",function(){return this.src+"?"});

  10. Linux下的消息队列

    文章链接:https://blog.csdn.net/qq_38646470/article/details/80169406