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

webwork 类型转换器

阅读更多
用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类型转换入门一

    本篇将介绍WebWork的基础知识,特别是它的类型转换机制,这对于理解Web应用程序中的数据处理至关重要。 WebWork的核心特性之一是其强大的类型转换系统,它允许开发者从HTTP请求参数自动转换为Java对象的属性。这种...

    WebWork类型转换

    ### WebWork类型转换详解 #### 一、内建类型转换 WebWork框架为了方便开发者处理各种数据类型,内置了一系列的类型转换器。这些转换器能够帮助开发者将HTTP请求中的参数值转换成Java对象中相应的属性值。下面我们...

    WEBWORK

    WebWork 提供了强大的动作(Action)处理、类型转换、拦截器(Interceptor)机制和丰富的验证功能,帮助开发者构建可维护、可扩展的 Web 应用程序。 在 WebWork 中,配置是至关重要的,因为它定义了框架如何工作...

    Webwork2开发指南

    Webwork2 的配置主要通过XML文件完成,包括action配置、拦截器配置、类型转换器配置等。这些配置文件定义了框架的行为,如动作的映射、异常处理策略等。 **8. 实例与案例分析** Webwork2 Guide.pdf 提供了丰富的...

    webwork_框架文档

    WebWork提供了许多先进的特性,如动作拦截器、类型转换、强大的异常处理机制以及对AJAX的支持,这些都使得开发更高效、更易于维护。 在WebWork框架中,`Action`是核心组件,它负责处理用户请求并执行业务逻辑。每个...

    WebWork教程

    4. 强大的类型转换器,能够自动转换数据类型以适应不同的数据处理需求。 5. 依赖倒置控制(IoC),帮助实现松耦合的设计,提高代码的可维护性和可扩展性。 WebWork安装指南部分描述了如何获取并安装WebWork框架。...

    WebWork docs 2 -- webWork 详细的说明文档

    6. **请求参数(Parameters)**:WebWork提供了多种方式处理请求参数,包括自动类型转换、参数验证和安全防护。理解参数绑定机制有助于构建健壮的Web应用。 7. **视图技术**:WebWork可以与多种视图技术集成,如JSP...

    webWork2开发指南

    5. **类型转换和验证**:WebWork2提供了强大的类型转换机制,可以自动将HTTP请求参数转换为ActionForm或Action类的属性。此外,它还支持数据验证,可以在接收用户输入时检查其合法性。 6. **标签库**:WebWork2提供...

    webwork的jar包

    WebWork 2 是WebWork 1 的后续版本,它引入了许多增强和新特性,如增强的动作类型、拦截器、更好的类型转换机制和更强大的表单回填功能。版本2.2.7是一个稳定版本,包含了一些重要的bug修复和性能优化。`webwork-...

    webwork2.1.7

    2. **类型安全的参数绑定**:WebWork支持将HTTP请求参数自动绑定到Action类的属性上,而且是类型安全的,避免了常见的类型转换错误。 3. **拦截器(Interceptors)**:WebWork引入了拦截器的概念,允许在Action执行...

    webwork教程

    - 提供了核心功能,如拦截器、属性验证、类型转换等。 - **WebWork2**: - 建立在Xwork之上,主要处理HTTP请求和响应。 - 使用ServletDispatcher来管理HTTP请求到Action的映射。 - 支持多种视图技术,如JSP、...

    webwork2中文教程

    接着,WebWork2引入了Type-Safe Request Parameters的概念,这意味着框架会自动将请求参数转换为Action类中的相应属性,避免了因类型不匹配导致的错误。此外,WebWork2还有强大的数据验证机制,可以在服务器端对用户...

    WebWork2配置

    2. **webwork.xml配置**:这是WebWork2的核心配置文件,它定义了动作映射、拦截器、结果类型等。在webwork.xml中,你可以设置全局的拦截器链,指定每个动作的路径、类、方法以及对应的视图(JSP或Freemarker模板)。...

    WebWork 教程

    随着版本演进,WebWork经历了重大变革,最新的WebWork2.x实际上是基于Xwork构建的,Xwork作为底层核心,专注于Command模式的实现,提供了诸如拦截器机制、表单验证、类型转换、OGNL表达式语言以及IoC容器等功能。...

    WebWork中文文档

    - **类型转换和验证**:WebWork提供了内置的类型转换和验证功能,可以自动将请求参数转换为模型对象的属性,并进行有效性验证。 - **国际化支持**:WebWork框架支持多语言环境,可以通过配置文件轻松实现应用程序的...

    webwork wiki 中文文档

    5. **类型转换**:介绍WebWork的内置类型转换器以及如何自定义类型转换器。 6. **异常处理**:说明如何设置全局和局部的异常处理策略,以及如何处理未捕获的异常。 7. **标签库**:讲解WebWork提供的JSP标签,如...

Global site tag (gtag.js) - Google Analytics