`
esffor
  • 浏览: 1362834 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Struts2内建类型转换器数据器使用简介

阅读更多

struts2 内建了类型转换器,可以方便的将我们在页面上输入的字符串数据转换成JavaBean中的Boolean,Float,Integer,Double,Long等数据类型,在无法转换成功时,还可以给出错误提示,非常方便

首先简历JavaBean:

 

package HelloWorld;

public class User ...{
    
private String username;
      
private Integer password;

      
private String[] books;
      
public String[] getBooks() ...{
            
return books;
        }

        
public void setBooks(String[] books) ...{
            
this.books = books;
        }

        
public String getUsername() ...{
            
return username;
        }

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

        
public Integer getPassword() ...{
            
return password;
        }

        
public void setPassword(Integer password) ...{
            
this.password = password;
        }


    
}

 

编写Action,需要继承ActionSupport,在action中有两个变量,一个是User类,一个是birth属性

我们定义birth属性和user类中的password属性都必须是Integer类型

 

package HelloWorld;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport...{
 

private String tip;
private User user;
private Integer birth;


public Integer getBirth() ...{
    
return birth;
}


public void setBirth(Integer birth) ...{
    
this.birth = birth;
}


public String execute() throws Exception...{
    System.out.println(
this.getUser().getUsername());
    System.out.println(
this.getUser().getPassword());
          
return SUCCESS;
    
  }


public User getUser() ...{
    
return user;
}


public void setUser(User user) ...{
    
this.user = user;
}


public String getTip() ...{
    
return tip;
}

public void setTip(String tip) ...{
    
this.tip = tip;
}



  
}

 

web.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
    xmlns
="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation
="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
>
    
<filter>
      
<filter-name>struts2</filter-name>
      
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
    
</filter>
    
<filter-mapping>
      
<filter-name>struts2</filter-name>
      
<url-pattern>/*</url-pattern>
    
</filter-mapping>


</web-app>

 

struts.xml (WEB-INF/classes下)

 

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

<struts>
    
<package name="struts" extends="struts-default">
       
<action name="Login" class="HelloWorld.LoginAction">
         
<result name="input">/helloworld/index.jsp</result>
         
<result name="success">/helloworld/welcome.jsp</result>
         
         
<result name="error">/helloworld/error.jsp</result>
       
</action>
    
</package>
</struts>

 

struts.properties(WEB-INF/classes下)

struts.custom.i18n.resources=messageResource

 

信息录入页面:

<%@ page language="java" contentType="text/html; charset=gb2312"
    pageEncoding="gb2312"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
  <head>
    <title></title>
  </head>
  <body>     
   <div style="color:red">
    <s:fielderror />
</div>
     <s:form action="Login">
       <s:textfield name="user.username" key="username"></s:textfield>

       <s:textfield name="user.password" key="password"></s:textfield>
 <s:textfield name="birth" key="password"></s:textfield>
       <s:submit value="login"></s:submit>
    </s:form>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
  </body>
</html>

信息展示页面:

<%@ page language="java" contentType="text/html; charset=gb2312"
    pageEncoding="gb2312"%>
<%@ page isELIgnored="false" %>
   
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
  <head>
    <title></title>
  </head>
  <body>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
   <body>
        转换成功!<br>
  用户1的用户名为:<s:property value="user.username"/><br>
  用户1的密码为:<s:property value="user.password"/><br>
  
    </body>
</html>

 

 

我们在资源文件中加入:

xwork.default.invalid.fieldvalue={0}类型转换错误,运行index.jsp.,在三个输入框中都输入admin,则会出现以下提示:


user.password字段类型转换失败
birth字段类型转换失败

 

在资源文件中定义的是全局转换错误提示的内容,如果想对具体Action中的字段进行提示,则编写ActionName.properties,本文中对应的就是LoginAction.properties,放在和Action同一个目录下,内容格式如下:invalid.fieldvalue.birth (其中birth为action中属性名)

本文LoginAction.properties内容为:invalid.fieldvalue.birth=生日必须为数字

再次运行index.jsp.结果如下:

user.password字段类型转换失败
生日必须位数字

分享到:
评论
1 楼 Ethip 2008-10-21  
 
我在做全局转换的时候,出现了问题。
我的实例中,因为要转换多个相同类型的属性,用到泛型。
如果你有空的话,麻烦帮我看看哦 ^_^
http://ethip.iteye.com/blog/254754

相关推荐

    STRUTS2类型转换

    Struts2的内建类型转换涵盖了大部分常见类型,包括但不限于String、boolean/Boolean、char/Character、整数类型(int/Integer、float/Float、long/Long、double/Double)、日期(使用当前时区的SHORT格式)以及数组...

    struts2类型转换

    Struts2框架内建了一些默认的类型转换器,如: 1. `IntegerTypeConverter`:将字符串转换为Integer。 2. `FloatTypeConverter`:将字符串转换为Float。 3. `BooleanTypeConverter`:将字符串转换为Boolean。 4. `...

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

    Struts2框架内建了一套完整的类型转换器,能够自动处理常见数据类型,如String、Integer、Double等。例如,当用户通过表单提交一个字符串"123",Struts2会自动将其转换为Integer类型。这一过程主要由`ognl....

    Struts2 中的类型转换

    Struts2使用其内建的类型转换系统将这些字符串转换为Java对象的实际数据类型,如整型、浮点型、日期型等。这一过程主要由`ValueStack`和`Converter`接口完成。 1. **ValueStack**:Struts2的核心组件之一,负责管理...

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

    默认情况下,Struts2提供了一系列内建的转换器,如IntegerTypeConverter、FloatTypeConverter和DateTypeConverter等,它们能够自动将请求参数转换为相应的数据类型。 1. **内置类型转换器**:这些转换器是Struts2...

    struts2校验器类型详解

    通过对Struts2框架内建校验器的介绍,我们可以看到Struts2提供了一系列强大而灵活的数据校验工具。无论是简单的非空校验还是复杂的类型转换和模式匹配,这些校验器都能满足开发者的不同需求。合理利用这些校验器不仅...

    struts2类型转换深入总结

    1. 自动类型转换:当用户提交表单数据时,Struts2会自动尝试将请求参数与Action类的属性进行匹配,并使用内置的Converter进行类型转换。例如,一个名为`age`的字符串参数会被尝试转换为`Integer`类型。 2. 自定义...

    Struts2的输入校验

    1. 类型转换器:Struts2将接收到的字符串参数转换为相应的数据类型,并将这些值赋给Action的属性。如果在此过程中发生异常,异常信息会被保存并由`conversionError`拦截器处理。 2. 客户端校验:Struts2支持在...

    struts2返回json数据的方法一 使用json-default

    `json-default`拦截器是Struts2内建的一种拦截器,专门用来处理JSON数据的响应。 1. **配置struts.xml** 在开始之前,我们需要在项目的`struts.xml`配置文件中声明并配置`json-default`拦截器。通常,我们会创建一...

    Struts2 in action中文版

    5.3 内建的类型转换器 89 5.3.1 立即可用的类型转换器 89 5.3.2 使用OGNL表达式从表单字段名映射到属性 90 5.4 自定义类型转换 101 5.4.1 实现类型转换器 102 5.4.2 在String和Circle之间转换 102 5.4.3 配置框架...

    深入学习struts2

    然而,有时内建的类型转换器可能无法满足所有需求,这时需要创建自定义类型转换器。自定义转换器通过实现Struts2的TypeConverter接口,或者继承DefaultTypeConverter类来实现。你需要重写`convertValue()`方法,根据...

    Struts2深入理解

    - **Struts2内建的拦截器:** - **exception:** 处理异常。 - **fileUpload:** 文件上传。 - **prepare:** 在调用Action方法之前准备数据。 - **params:** 设置Action中的参数。 **2. 拦截器的组合与使用:...

    struts2教程我在培训时用的

    - **基于Struts2的类型转换器**:使用框架内置的类型转换器。 - **使用OGNL语言来转换类型**:通过OGNL表达式来定义复杂的类型转换逻辑。 **4.2 拦截器应用** - **拦截器的实现原理**:拦截器是一种在Action执行...

    Struts2学习文档

    **5.1 Struts2内建的类型转换器** - **概念介绍**:Struts2提供了许多内置的类型转换器,如`IntegerTypeConverter`、`DateTypeConverter`等,这些转换器用于自动将表单提交的数据转换为目标对象的类型。 **5.2 ...

    Struts2的高级应用,最新 PPT教程

    Struts2提供了一个基础类org.apache.struts2.util.StrutsTypeConverter,它简化了转换器的实现。通过扩展这个类,开发者可以轻松地创建自己的类型转换器,以处理特定对象到字符串或字符串到特定对象的转换。 7.1.3 ...

    strut2的类型转换的实例

    Struts2内建了一套完整的类型转换系统,能够自动处理基本数据类型的转换,例如字符串转整型、浮点型、布尔型等。对于复杂类型如日期、自定义对象等,Struts2提供了`Converter`接口和`ConversionService`接口,以及一...

    struts2拦截器

    Struts2提供了许多内建的拦截器,它们覆盖了常见的功能需求,例如: - **模型驱动(ModelDriven)**:初始化模型实例。 - **参数(Params)**:处理请求参数。 - **令牌(Token)**:防止重复提交。 - **异常...

    深入浅出Struts2(附源码)

    作者处处从实战出发,在丰富的示例中直观地探讨了许多实用的技术,如数据类型转换、文件上传和下载、提高Struts 2应用的安全性、调试与性能分析、FreeMarker、Velocity、Ajax,等等。跟随作者一道深入Struts 2,聆听...

    struts2中类型转换实例代码

    Struts2内建了一套类型转换器,可以处理常见的数据类型转换: 1. **String**:可以将int、long、double、boolean、String数组转换为字符串。 2. **boolean/Boolean**:支持字符串到布尔值的相互转换。 3. **char/...

Global site tag (gtag.js) - Google Analytics