用webwork的datepicker时, 如果格式是"%Y-%m-%d"工作很正常, 但是有些格式需要带上时间的:
"%Y-%m-%d %H:%M", 这时用webwork默认的类型转换就不行了,需要自己实现, 根据javaeye论坛某高手的建议用正则表达式来判断form传过来的日期字符串是"%Y-%m-%d"还是"%Y-%m-%d %H:%M",再用相应的SimpleDateFormat来parse分析字符串生成Date对象, 代码如下:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import org.apache.log4j.Logger;
import com.opensymphony.webwork.util.WebWorkTypeConverter;
public class DateConverter
extends WebWorkTypeConverter
{
private static final Logger log = Logger.getLogger( DateConverter.class );
private final static String regex_time = "[0-9]{2,4}-[0-9]{1,2}-[0-9]{1,2} [0-9]{1,2}:[0-9]{1,2}";
private final static SimpleDateFormat sdf_time = new SimpleDateFormat(
"yyyy-MM-dd HH:mm" );
private final static String regex_date = "[0-9]{2,4}-[0-9]{1,2}-[0-9]{1,2}";
private final static SimpleDateFormat sdf_date = new SimpleDateFormat(
"yyyy-MM-dd" );
@Override public Object convertFromString( Map context, String[] values,
Class toClass )
{
if ( values.length == 1 )
{
Date date = null;
try
{
date = convertToDate( values[0] );
}
catch ( ParseException e )
{
log.warn( e.getMessage() );
}
return date;
}
Date[] results = new Date[values.length];
for ( int i = 0; i < values.length; i++ )
{
String value = values[i];
try
{
results[i] = convertToDate( value );
}
catch ( ParseException e )
{
log.warn( e.getMessage() );
}
}
return results;
}
private Date convertToDate( String value )
throws ParseException
{
if ( value.matches( regex_time ) )
return sdf_time.parse( value );
else if ( value.matches( regex_date ) )
return sdf_date.parse( value );
return null;
}
@Override public String convertToString( Map context, Object o )
{
if ( o instanceof Date )
{
Date date = (Date) o;
return sdf_time.format( date );
}
return o.toString();
}
public static void main( String[] args )
{
System.out.println( "2006-07-11".matches( regex_date ) );
System.out.println( "2006-07-11 00:21".matches( regex_time ) );
}
}
要让这个类来代替webwork默认的转换你还需要在classpath目录, 一般就是classes目录放置配置文件
xwork-conversion.properties:
java.util.Date=DateConverter 这种方法是对整个application起作用,.
如果要只对单个action起作用, 在action同一个package写一个ActionClassName-conversion.properties:
startDate=DateConverter
分享到:
相关推荐
本篇将介绍WebWork的基础知识,特别是它的类型转换机制,这对于理解Web应用程序中的数据处理至关重要。 WebWork的核心特性之一是其强大的类型转换系统,它允许开发者从HTTP请求参数自动转换为Java对象的属性。这种...
### WebWork类型转换详解 #### 一、内建类型转换 WebWork框架为了方便开发者处理各种数据类型,内置了一系列的类型转换器。这些转换器能够帮助开发者将HTTP请求中的参数值转换成Java对象中相应的属性值。下面我们...
WebWork 提供了强大的动作(Action)处理、类型转换、拦截器(Interceptor)机制和丰富的验证功能,帮助开发者构建可维护、可扩展的 Web 应用程序。 在 WebWork 中,配置是至关重要的,因为它定义了框架如何工作...
Webwork2 的配置主要通过XML文件完成,包括action配置、拦截器配置、类型转换器配置等。这些配置文件定义了框架的行为,如动作的映射、异常处理策略等。 **8. 实例与案例分析** Webwork2 Guide.pdf 提供了丰富的...
WebWork提供了许多先进的特性,如动作拦截器、类型转换、强大的异常处理机制以及对AJAX的支持,这些都使得开发更高效、更易于维护。 在WebWork框架中,`Action`是核心组件,它负责处理用户请求并执行业务逻辑。每个...
4. 强大的类型转换器,能够自动转换数据类型以适应不同的数据处理需求。 5. 依赖倒置控制(IoC),帮助实现松耦合的设计,提高代码的可维护性和可扩展性。 WebWork安装指南部分描述了如何获取并安装WebWork框架。...
6. **请求参数(Parameters)**:WebWork提供了多种方式处理请求参数,包括自动类型转换、参数验证和安全防护。理解参数绑定机制有助于构建健壮的Web应用。 7. **视图技术**:WebWork可以与多种视图技术集成,如JSP...
5. **类型转换和验证**:WebWork2提供了强大的类型转换机制,可以自动将HTTP请求参数转换为ActionForm或Action类的属性。此外,它还支持数据验证,可以在接收用户输入时检查其合法性。 6. **标签库**:WebWork2提供...
WebWork 2 是WebWork 1 的后续版本,它引入了许多增强和新特性,如增强的动作类型、拦截器、更好的类型转换机制和更强大的表单回填功能。版本2.2.7是一个稳定版本,包含了一些重要的bug修复和性能优化。`webwork-...
2. **类型安全的参数绑定**:WebWork支持将HTTP请求参数自动绑定到Action类的属性上,而且是类型安全的,避免了常见的类型转换错误。 3. **拦截器(Interceptors)**:WebWork引入了拦截器的概念,允许在Action执行...
- 提供了核心功能,如拦截器、属性验证、类型转换等。 - **WebWork2**: - 建立在Xwork之上,主要处理HTTP请求和响应。 - 使用ServletDispatcher来管理HTTP请求到Action的映射。 - 支持多种视图技术,如JSP、...
接着,WebWork2引入了Type-Safe Request Parameters的概念,这意味着框架会自动将请求参数转换为Action类中的相应属性,避免了因类型不匹配导致的错误。此外,WebWork2还有强大的数据验证机制,可以在服务器端对用户...
2. **webwork.xml配置**:这是WebWork2的核心配置文件,它定义了动作映射、拦截器、结果类型等。在webwork.xml中,你可以设置全局的拦截器链,指定每个动作的路径、类、方法以及对应的视图(JSP或Freemarker模板)。...
随着版本演进,WebWork经历了重大变革,最新的WebWork2.x实际上是基于Xwork构建的,Xwork作为底层核心,专注于Command模式的实现,提供了诸如拦截器机制、表单验证、类型转换、OGNL表达式语言以及IoC容器等功能。...
- **类型转换和验证**:WebWork提供了内置的类型转换和验证功能,可以自动将请求参数转换为模型对象的属性,并进行有效性验证。 - **国际化支持**:WebWork框架支持多语言环境,可以通过配置文件轻松实现应用程序的...
5. **类型转换**:介绍WebWork的内置类型转换器以及如何自定义类型转换器。 6. **异常处理**:说明如何设置全局和局部的异常处理策略,以及如何处理未捕获的异常。 7. **标签库**:讲解WebWork提供的JSP标签,如...