我们通过表单输入的数据其实都是一个String,有时需要把这些String转成int date等等
Struts1中也提供了类型转换器,比如form中有一个字段age,当我们输入表单时, Struts1的转换器会将这个age字符串转换成Form表单中对应的age数值,Struts2提供了更加强大的类型转换.
实例:
提供一个文本框,输入用户名和密码,以”,”号分隔开
首先新建输入页面(input.jsp)
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head>
<body>
<s:form action="userAction.action">
<s:textfield name="user" label="username and password"></s:textfield>
</s:form>
</body>
</html>
创建一个用户pojo(User.java)
package com.bean;
public class User {
private String username;
private String password;
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
然后增加自定义转换器 (UserConverter.java)
package com.converter;
import java.util.Map;
import com.bean.User;
import ognl.DefaultTypeConverter;
public class UserConverter extends DefaultTypeConverter {
@Override
public Object convertValue(Map content, Object value, Class typeClass) {
if(String.class == typeClass){
User user = (User)value;
String username = user.getUsername();
String password = user.getPassword();
return username + "-" + password;
}
if(User.class == typeClass){
User user = new User();
String[] str = (String[])value;
String[] paramValues = str[0].split(",");
user.setUsername(paramValues[0]);
user.setPassword(paramValues[1]);
return user;
}
return null;
}
}
创建Action (UserAction.java)
package com.action;
import com.bean.User;
import com.opensymphony.xwork2.ActionSupport;
public class UserAction extends ActionSupport {
private static final long serialVersionUID = 8469145731747703330L;
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@Override
public String execute() throws Exception {
if("callan".equals(user.getUsername()) && "fjf".equals(user.getPassword())){
return SUCCESS;
} else {
return INPUT;
}
}
}
添加struts.xml中添加以下配置
<action name="userAction" class="com.action.UserAction">
<result name="success">/welcome.jsp</result>
<result name="input">/input.jsp</result>
</action>
接着在Action同目录下加入XXX-conversion.properties
这里是在UserAction目录下加入UserAction-conversion.properties,并在其中加入
user=com.converter.UserConverter
user表示的是UaerAction中的一个字段,user使用com.converter.UserConverter转换器
也可以配置全局转换器,在class根目录下添加xwork-conversion.properties,这个名字是固定的,加入com.bean.User=com.converter.UserConverter2表示所有的com.bean.User都使用的是UserConverter2转换器
分享到:
相关推荐
在Struts2中,类型转换器(Type Converter)是框架的一个关键特性,用于处理Action类中属性的自动类型转换。这个特性使得开发者无需手动进行数据类型之间的转换,从而提高了开发效率和代码的可读性。 标题中的...
### Struts2转换器、拦截器、验证以及国际化深度解析 #### 类型转换概述与实践 类型转换在Struts2框架中扮演着至关重要的角色,它解决了前端展示数据与后端处理数据之间的类型不匹配问题。在Web开发中,前端往往以...
2. **配置转换器**:为了让Struts2知道何时使用自定义的转换器,我们需要在配置文件(通常是struts.xml)中进行声明。可以使用`<conversion-property>`标签来指定转换器应用于哪个字段,或者全局注册转换器。 ```...
4. **使用转换器**:一旦转换器注册成功,Struts2将在处理表单提交时自动调用该转换器,将字符串转换为日期对象。 通过这样的自定义转换器,我们可以确保Struts2能正确处理特定格式的日期输入,避免了因格式不匹配...
要使用Struts的日期转换器,首先你需要在Action类中定义一个日期类型的属性,并为其添加相应的注解`@DateTimeFormat`,或者在Struts配置文件中定义一个转换器。`@DateTimeFormat`注解允许你指定日期的输入格式,这样...
这篇博客“Struts2数据类型转换器”可能深入探讨了这个主题,虽然具体的细节无法在此给出,但我们可以根据Struts2中数据类型转换的工作原理来展开讨论。 在Java Web开发中,用户通过表单提交的数据通常是字符串形式...
Struts2是一个流行的Java web应用程序框架,它极大地简化了MVC(模型-视图-控制器)架构的实现。在处理用户交互和数据交换时,JSON(JavaScript Object Notation)已经成为现代Web服务的标准格式,因为它轻量级且...
自定义类型转换器需要实现`org.apache.struts2.util.TypeConverter`接口,或者继承`org.apache.struts2.convention.converters.DefaultConversionProvider`基类,覆盖`convertValue()`方法。然后,通过在Action类或...
在Struts2框架中,自定义类型转换器是开发者为了满足特定需求,对框架默认的类型转换机制进行扩展的一种方式。Struts2允许我们创建自己的转换器类来处理输入数据,确保模型对象的属性能够正确地被转换为预期的数据...
这时,我们就需要自定义一个Struts转换器来完成这个任务。 自定义Struts转换器的步骤如下: 1. 创建转换器类:继承`org.apache.struts2.util.StrutsTypeConverter`类,并重写其`convertFromString`和`...
在Struts中,转换器是实现了org.apache.struts2.util.Converter接口的类。这个接口定义了一个`convert`方法,该方法接受一个对象作为参数,并返回转换后的结果。默认情况下,Struts提供了许多内置的转换器,可以处理...
本文主要介绍Struts1和Struts2中的自定义类型转换器,并探讨其实现机制。 #### 二、Struts1中的自定义类型转换器 在Struts1中,自定义类型转换器主要是通过继承`com.sun.org.apache.commons.beanutils.Converter`...
在使用富文本编辑器ueditor与Struts2框架结合进行图片上传时,常常会遇到一些问题,这些问题可能涉及文件过滤、文件类型限制、文件大小控制、上传路径设置等多个方面。以下是一些解决这些问题的关键知识点: 1. **...
在Struts2中,转换器(Converter)扮演着至关重要的角色,它负责将用户输入的数据转换为模型对象的属性,确保数据类型的一致性和安全性。转换器是Struts2框架中Action类与HTTP请求之间数据绑定的关键组件。 在...