一 类型转换

input.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML >
<html>
  <head>
  <script type="text/javascript" src="js/My97DatePicker/WdatePicker.js"></script>
  <script type="text/javascript">
     function check(form) {
       if(form.point.value=='') {
            alert("请输入坐标值!");
            form.point.focus();
            return false;
       }

      if(form.age.value=='') {
            alert("请输入用户年龄!");
            form.age.focus();
            return false;
       }-]\d*$)/.test( form.age.value )))
       {
            alert("输入的年龄不是正整数");
             form.age.focus();
            return false;
       }

         return true;
     }

  </script>
  </head>
  <body>

   <h1>请输入一个点的坐标(使用逗号分隔开)</h1>
  <form action="converterAction.action" method="post" >
      坐标 :<input type="text"  name="point" > <br>
      坐标2 :<input type="text"  name="point2" > <br>
      用户名 : <input type="text" name="username"><br>
      年龄 : <input type="text" name="age"><br>
      出生日期 : <input type="text" name="birthday" onClick="WdatePicker()" readonly ><br>
      <input type="submit" onclick="return check(this.form)">
      <input type="reset"  >
  </form>

  </body>
</html>

2 Point.java

package com.xiping.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;
    }

    @Override
    public String toString() {
        return "Point [x=" + x + ", y=" + y + "]";
    }

}

3 PointerAction.java

package com.xiping.action;

import java.util.Date;

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

public class PointerAction extends ActionSupport {
    private Point point;
    private Point point2;
    private String username;
    private int age;
    private Date birthday;

    public Point getPoint2() {
        return point2;
    }

    public void setPoint2(Point point2) {
        this.point2 = point2;
    }

    public Point getPoint() {
        return point;
    }

    public void setPoint(Point point) {
        this.point = point;
    }

    public String getUsername() {
        return username;
    }

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

    public int getAge() {
        return age;
    }

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

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public String execute() throws Exception {
        System.out.println("--- PointerAction ---");
        System.out.println("point=" + point);
        System.out.println("age=" + age);
        return "success";
    }
}

4 PointConverter.java

package com.xiping.converter;

import java.util.Map;

import org.apache.struts2.util.StrutsTypeConverter;

import com.xiping.bean.Point;

public class PointConverter extends StrutsTypeConverter {

    public Object convertFromString(Map context, String[] value, Class toType) {
        String[] str = (String[]) value;

        String firstValue = str[];

        String[] resultValue = firstValue.split(",");

        Point point = new Point();
        point.setX(Integer.parseInt(resultValue[]));
        point.setY(Integer.parseInt(resultValue[]));

        return point;
    }

    public String convertToString(Map context, Object value) {
        Point point = (Point) value;

        int x = point.getX();
        int y = point.getY();

        String result = "params x: " + x + " y: " + y;

        return result;
    }
}

5 . struts.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>

    <!-- 所有匹配*.action的请求都由struts2处理 -->
    <constant name="struts.action.extension" value="action" />
    <!-- 是否启用开发模式 -->
    <constant name="struts.devMode" value="true" />
    <!-- struts配置文件改动后,是否重新加载 -->
    <constant name="struts.configuration.xml.reload" value="true" />
    <!-- 设置浏览器是否缓存静态内容 -->
    <constant name="struts.serve.static.browserCache" value="false" />
    <!-- 请求参数的编码方式 -->
    <constant name="struts.i18n.encoding" value="utf-8" />
    <!-- 每次HTTP请求系统都重新加载资源文件,有助于开发 -->
    <constant name="struts.i18n.reload" value="true" />
    <!-- 文件上传最大值 -->
    <constant name=" />
    <!-- 让struts2支持动态方法调用 -->
    <constant name="struts.enable.DynamicMethodInvocation" value="true" />
    <!-- Action名称中是否还是用斜线 -->
    <constant name="struts.enable.SlashesInActionNames" value="false" />
    <!-- 允许标签中使用表达式语法 -->
    <constant name="struts.tag.altSyntax" value="true" />

    <package name="aaa" extends="struts-default">

        <action name="converterAction" class="com.xiping.action.PointerAction">
            <result name="success">/output.jsp</result>
        </action>

    </package>

</struts>

6 xwork-conversion.properties

在src目录下,web-info/classes有一份副本。

com.xiping.bean.Point=com.xiping.converter.PointConverter

Struts学习总结-02 类型转换的更多相关文章

  1. Struts学习总结-02 上传文件

    Struts 2框架提供了内置支持处理文件上传使用基于HTML表单的文件上传.上传一个文件时,它通常会被存储在一个临时目录中,他们应该由Action类进行处理或移动到一个永久的目录,以确保数据不丢失. ...

  2. 软件测试之loadrunner学习笔记-02集合点

    loadrunner学习笔记-02集合点 集合点函数可以帮助我们生成有效可控的并发操作.虽然在Controller中多用户负载的Vuser是一起开始运行脚本的,但是由于计算机的串行处理机制,脚本的运行 ...

  3. 机器学习实战(Machine Learning in Action)学习笔记————02.k-邻近算法(KNN)

    机器学习实战(Machine Learning in Action)学习笔记————02.k-邻近算法(KNN) 关键字:邻近算法(kNN: k Nearest Neighbors).python.源 ...

  4. OpenCV 学习笔记 02 使用opencv处理图像

    1 不同色彩空间的转换 opencv 中有数百种关于不同色彩空间的转换方法,但常用的有三种色彩空间:灰度.BRG.HSV(Hue-Saturation-Value) 灰度 - 灰度色彩空间是通过去除彩 ...

  5. [eShopOnContainers 学习系列] - 02 - vs 2017 开发环境配置

    [eShopOnContainers 学习系列] - 02 - vs 2017 开发环境配置 https://github.com/dotnet-architecture/eShopOnContain ...

  6. SaToken学习笔记-02

    SaToken学习笔记-02 如果排版有问题,请点击:传送门 常用的登录有关的方法 - StpUtil.logout() 作用为:当前会话注销登录 调用此方法,其实做了哪些操作呢,我们来一起看一下源码 ...

  7. Redis:学习笔记-02

    Redis:学习笔记-02 该部分内容,参考了 bilibili 上讲解 Redis 中,观看数最多的课程 Redis最新超详细版教程通俗易懂,来自 UP主 遇见狂神说 4. 事物 Redis 事务本 ...

  8. Struts学习之类型转换

    * 从页面中获取对应的内容        * 在动作类action中,声明与页面中表单name属性的值同名的属性        * 提供get和set方法        * struts2框架就会通过 ...

  9. Struts(二十一):类型转换与复杂属性、集合属性配合使用

    背景: 本章节主要以复杂属性.集合属性类型转化为例,来学习这两种情况下怎么使用. 复杂对象属性转换场景: 1.新建struts_04 web.xml <?xml version="1. ...

随机推荐

  1. jQuery学习笔记(三):选择器总结

    这一节详细的总结jQuery选择器. 一.基础选择器 $('#info'); // 选择id为info的元素,id为document中是唯一的,因此可以通过该选择器获取唯一的指定元素$('.infoC ...

  2. RabbitHub开源情况及计划

    之前写过一篇".NET 平台下的插件化开发内核(Rabbit Kernel)",已经过去三个月了,期间RabbitHub并不是没有了发展更不是放弃了发展,在RabbitHub中的群 ...

  3. [BZOJ 1997][HNOI2010]Planar(2-SAT)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1997 分析: 考虑每条边是在圈子里面还是圈子外面 所以就变成了2-SAT判定问题了= ...

  4. 48-tree 命令总结

  5. Beta版本冲刺Day6

    会议讨论: 628:配置Mysql的时候遇到了问题,在修改数据库用户密码时无法修改,并且服务器好像连接不上去了,其他组员则继续他们的任务.601:将一些原来的界面进行了修改,修改成了更加美观的外形. ...

  6. 单链表C/C++实现

    #include <iostream> using namespace std; const int N = 10; typedef int ELEMTYPE; typedef struc ...

  7. 本机ubuntu链接阿里云服务器(也是ubuntu)

    首先在本机安装ssh工具,并修改配置文件(参考:http://www.cnblogs.com/herd/p/5009067.html) 第一步:ssh 100.121.156.32(即:服务器的ip地 ...

  8. jenkins 把包传到远程服务器上

    首先我们在 一台服务器上部署svn,maven,jdk,tomcat,nexus,还有Jenkins. 这里我主要记录Jenkins. 首先我们从网上下载Jenkins的包 wget http://m ...

  9. XML与 HTML

    XML是E4X中定义的一个重要的新类型,侧重于如何结构化描述信息,用它来表现XML结构中任何独立的部分,是一种用于标记电子文件使其具有结构性的标记语言. XML语言被设计用来描述数据,它的焦点是数据的 ...

  10. <诗经>的由来

    <人间词话七讲> 第一讲 那是一个把各地的歌谣都编辑在一起的collection. 而且, 它被编辑的时候有一个目的, 在周朝的时候有采诗之官, 他们采集各地的歌谣, 以观民风, 用来给周 ...