struts2类型转换

在struts2中如何定义类型转化器
   * 定于需求:
        * 完成java.lang.String--->java.util.Date类型的转化
            例如20111212(Strung)---java.util.Date()
            
   * 在jsp页面增加组件
      出生日期:<input type="text" name="createTime">要求输入格式yyyyMMdd<br>
      
   * 在action增加如下属性
       private Date createTime;  
       
   * 自定义类型转化器(注意转化失败时一定要抛出异常)
			     public class DateConverter  extends DefaultTypeConverter{
				/**
				 * 
				 * @param context:ongn上下文(?)
				 * @param value:要转化的值,该值为数组:request.getParameterValues("createTime")--->String[]
				 * @param toType:要转化的数据类型,这里为java.util.Date
				 * @return:该方法的返回值就是,action中cteateTime属性要接受到的值
				 */
				public Object convertValue(Map<String, Object> context, Object value, Class toType) {
				    if(value==null){
			        	return null;
			        }
			        if(toType==null){
			        	return null;
			        }
			        
			        if(toType!=java.util.Date.class){
			        	return null;
			        }
			        
			        if(value instanceof java.lang.String[]){
			        	 String[] str=(String[])value;
			        	 try {
							if(str[0]!=null&&!"".equals(str[0])){
								 SimpleDateFormat sf=new SimpleDateFormat("yyyyMMdd");
								 return sf.parse(str[0]);
							 }
						} catch (ParseException e) {
							e.printStackTrace();
							/*
							 * struts2的类类型转化异常是由 <interceptor name="conversionError" 
							 *        class="org.apache.struts2.interceptor.StrutsConversionErrorInterceptor>
							 *        类型转化错误拦截器处理的
							 *        * 如果类型转化器转化数据出现了异常,则在类型转化器中必须抛出异常,
							 *            类型转化错误拦截器 只有接受到异常,才转到错误处理页面
							 *        * 如果类型转化器转化数据出现了异常没有抛出
							 *          类型转化错误拦截器 不能捕获到异常, 类型转化错误拦截器认为是正确的操作,所以不转到错误处理页面
							 */
							throw new RuntimeException(e);
						}
			        }
					return null;
				}
			}
			
    * 注册类型转化器
       * 配置局部的(在与Action相同的目录下)
             * 创建属性文件格式:ActinClassName-conversion.properties
                 * ActinClassName:action的类名
                 * -conversion.properties:固定写法
                 * 内容格式:待转化的属性名称=类型转化器的完整的类路径 
                 
              * 本例属性文件  UserAction-conversion.properties  
                * 内容:createTime=cn.itcast.converter.DateConverter
      
              cn/itcast/converter/UserAction--conversion.properties
      
       * 配置全局的(在src目录下)
             * 创建属性文件格式:xwork-conversion.properties(固定写法)
                 * 内容格式:待转化的类型=类型转化器的完整的类路径 
                 
              * 本例属性文件  :xwork-conversion.properties
                * 内容:java.util.Date=cn.itcast.converter.DateConverter
           
       
       
     * 在jsp页面显示详细的错误信息
          * 引入struts2的标签库:<%@ taglib uri="/struts-tags"   prefix="s"%>
          * 使用<s:fielderror/>标签显示错误信息
             * struts2的转化错误类型拦截器,把错误信息放置到一个集合中
             * <s:fielderror/>遍历集合,打印错误信息
             
         
         *  默认的显示错误的信息是英文的,该信息在xwork-core-2.1.6.jar/com\opensymphony\xwork2下的
            xwork-messages.properties文件中
            xwork.default.invalid.fieldvalue=Invalid field value for field "{0}".   
              {0}:Action中的属性:jsp页面的值转化为action中的属性
            
            
          * 修改错误信息为中文 
               * 在与action同级的目录(其他目录也可)创建*.properties文件,文件的名称自定义,后缀名是.properties
                 * 本例为 converter.properties
                 * 增加如下内容
                    * 增加默认的提示(对所有的action中的属性都有效)
                      xwork.default.invalid.fieldvalue=类型转化  出现了错误 "{0}".
                    
                    * 增加具体的对action中每个属性的提示:
                         * 格式:invalid.fieldvalue.xxx=提示信息
                                 xxx:表示action中的属性名称
                         * 本例:invalid.fieldvalue.createTime=转化createTime属性时出现了异常 
                         
                   *  具体的要覆盖默认的
                   
               * 加载自定义的国际化资源文件   
                  * 配置加载自定义的国际化资源文件
                     * cn.itcast.converter.converter:加载cn.itcast.converter.converter.properties资源文件
                     * 在struts.xml文件中增加如下内容
                       <constant name="struts.custom.i18n.resources" 
                                      value="cn.itcast.converter.converter"></constant>
              
        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值