- 浏览: 222482 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
Wangwei86609:
非常好的规则引擎框架,支持决策树和多线程运行规则https:/ ...
规则引擎 -
hzxlb910:
真详细,收藏哈
maven setting.xml配置说明 -
东方胜:
[b][/b]
脚本语言 Tcl -
345161974:
hyw520110 写道345161974 写道这个Visua ...
Visual Tcl Binary 完整版(完美中文支持) -
hyw520110:
345161974 写道这个Visual Tcl Binary ...
Visual Tcl Binary 完整版(完美中文支持)
struts2提供了一个时间标签:
<s:date name="todayDate" format="yyyy-MM-dd" />
但这个标签很只能在显示的时候用,但如果我想在输入框里显示时间,让用户直接修改时间,怎么弄?datepicker?选择太麻烦,我想让用户输入,并且兼容多种日期格式。还有,如果用时间标签的话,每个地方都需要指定format,如果我想修改一下格式,所有的时间显示都变,怎么弄?
翻了一下struts2的源码,和文档,找到一个办法。 com.opensymphony.xwork2.util.XWorkConverter
- * <p/> In some situations you may wish to apply a type converter globally.
- * This can be done by editing the file
- * <b>xwork-conversion.properties</b> in the root of your class path
- * (typically WEB-INF/classes) and providing a
- * property in the form of the class name of the object you wish to convert
- * on the left hand side and the class name of
- * the type converter on the right hand side. For example, providing
- * a type converter for all Point objects would mean
- * adding the following entry:
- *
- * <p/><b>com.acme.Point = com.acme.PointConverter</b>
* <p/> In some situations you may wish to apply a type converter globally. * This can be done by editing the file * <b>xwork-conversion.properties</b> in the root of your class path * (typically WEB-INF/classes) and providing a * property in the form of the class name of the object you wish to convert * on the left hand side and the class name of * the type converter on the right hand side. For example, providing * a type converter for all Point objects would mean * adding the following entry: * * <p/><b>com.acme.Point = com.acme.PointConverter</b>
XWorkConverter,先在classpath root下找xwork-conversion.properties文件,这个文件定义了全局转换。然后每遇到新的类需要转换,便查找是否有特殊的自定义转换配置。特殊自定义转换配置文件的路径是:
className.replace('.', '/') + "-conversion.properties";
比方com.acme.Point的转换配置就是classpath 下的/com/acme/Point-coversion.properties文件。
ok,这个问题好解决了。
我的xwork-coversion.properties文件:
java.util.Date=cn.jolstar.struts.type.DateTypeConverter
我的DateTypeConverter代码:
- /**
- *
- */
- package cn.jolestar.struts.type;
- import java.text.DateFormat;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import java.util.Map;
- import org.apache.log4j.Logger;
- import org.apache.struts2.util.StrutsTypeConverter;
- /**
- * @author jolestar
- *
- */
- public class DateTypeConverter extends StrutsTypeConverter {
- private static final Logger log = Logger.getLogger(DateTypeConverter.class);
- public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd";
- //暂时只考虑这几种日期格式
- public static final DateFormat[] ACCEPT_DATE_FORMATS = {
- new SimpleDateFormat(DEFAULT_DATE_FROMAT),
- new SimpleDateFormat("yyyy年MM月dd日"),
- new SimpleDateFormat("yyyy/MM/dd") };
- /**
- *
- */
- public DateTypeConverter() {
- }
- /*
- * (non-Javadoc)
- *
- * @see org.apache.struts2.util.StrutsTypeConverter#convertFromString(java.util.Map,
- * java.lang.String[], java.lang.Class)
- */
- @Override
- public Object convertFromString(Map context, String[] values, Class toClass) {
- if (values[0] == null || values[0].trim().equals(""))
- return null;
- for (DateFormat format : ACCEPT_DATE_FORMATS) {
- try {
- return format.parse(values[0]);
- } catch (ParseException e) {
- continue;
- } catch (RuntimeException e) {
- continue;
- }
- }
- log.debug("can not format date string:" + values[0]);
- return null;
- }
- /*
- * (non-Javadoc)
- *
- * @see org.apache.struts2.util.StrutsTypeConverter#convertToString(java.util.Map,
- * java.lang.Object)
- */
- @Override
- public String convertToString(Map context, Object o) {
- if (o instanceof Date) {
- SimpleDateFormat format = new SimpleDateFormat(
- DEFAULT_DATE_FORMAT);
- try {
- return format.format((Date) o);
- } catch (RuntimeException e) {
- return "";
- }
- }
- return "";
- }
- }
/** * */ package cn.jolestar.struts.type; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Map; import org.apache.log4j.Logger; import org.apache.struts2.util.StrutsTypeConverter; /** * @author jolestar * */ public class DateTypeConverter extends StrutsTypeConverter { private static final Logger log = Logger.getLogger(DateTypeConverter.class); public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd"; //暂时只考虑这几种日期格式 public static final DateFormat[] ACCEPT_DATE_FORMATS = { new SimpleDateFormat(DEFAULT_DATE_FROMAT), new SimpleDateFormat("yyyy年MM月dd日"), new SimpleDateFormat("yyyy/MM/dd") }; /** * */ public DateTypeConverter() { } /* * (non-Javadoc) * * @see org.apache.struts2.util.StrutsTypeConverter#convertFromString(java.util.Map, * java.lang.String[], java.lang.Class) */ @Override public Object convertFromString(Map context, String[] values, Class toClass) { if (values[0] == null || values[0].trim().equals("")) return null; for (DateFormat format : ACCEPT_DATE_FORMATS) { try { return format.parse(values[0]); } catch (ParseException e) { continue; } catch (RuntimeException e) { continue; } } log.debug("can not format date string:" + values[0]); return null; } /* * (non-Javadoc) * * @see org.apache.struts2.util.StrutsTypeConverter#convertToString(java.util.Map, * java.lang.Object) */ @Override public String convertToString(Map context, Object o) { if (o instanceof Date) { SimpleDateFormat format = new SimpleDateFormat( DEFAULT_DATE_FORMAT); try { return format.format((Date) o); } catch (RuntimeException e) { return ""; } } return ""; } }
这样,从字符串转换为日期对象的时候,会尝试上面列出的多种日期格式,但输出的时候,则会统一按照DEFAULT—DATE—FORMAT转换。 需要修改格式,只需要修改DEFAULT—DATE—FORMAT。当然,你也可以把它方在配置文件里,便于修改。
了解了这一点,其实也就 明白了struts的类型转换模式。然后,无论是字符串id到持久化对象的转换,还是自定义的字符串到对象之间的转换,都容易了。
发表评论
-
pushlet
2012-05-31 14:56 1179基于pushlet的文件监控系统的研究与实现 http ... -
@Transactional spring 配置事务
2012-04-25 11:15 2103@Transactional spring 配置事 ... -
Spring的组件自动扫描机制
2012-04-09 17:47 0Spring将所有的bean都纳入到IOC中创建、管理和维护。 ... -
struts&rest
2012-04-03 00:11 801深入浅出REST http://www.infoq. ... -
文件转码
2011-11-16 09:55 2035工程项目太多,各工程或各文件编码不统一时,可运行本工具类,把工 ... -
安装和使用SpringIDE-------III
2011-07-29 10:40 8712. 编写类文件 · ... -
安装和使用SpringIDE-------II
2011-07-29 10:39 690显示图表,如图: 发表于 @ 2006 ... -
安装和使用SpringIDE
2011-07-29 10:36 1137这篇文章谈谈如何安装与使用SpringIDE。作为辅助Sp ... -
使用AJDT简化AspectJ开发
2011-07-29 10:05 1067面向方面编程(AOP)可用来解决当今的 许多 应用需求 ... -
利用Apache的CLI来处理命令行
2011-05-16 17:02 991CLI是Jakarta Commons中的一个子类。如果你仅仅 ... -
CGlib简单介绍
2011-04-28 08:37 886CGlib概述:cglib(Code Generation L ... -
Java ClassLoader
2011-04-25 18:24 1021当Java编译器编译好.class ... -
Template模式与Strategy模式
2011-04-20 16:23 697template method模式和stra ... -
Ibatis读写CLOB数据
2011-03-21 14:21 1063转载:http://www.iteye.com/topic/7 ... -
轻松构建和运行多线程的单元测试
2011-03-18 22:09 1011背景 并行程序 并行程序是指控制计算机系统中两个或多个分别 ... -
Cairngorm3中文简介
2011-03-18 22:07 1036官方原文地址:http://opensource.adobe. ... -
ibator改造之返回数据库注释和数据库分页
2010-12-23 17:24 2266转载:http://www.iteye.com ... -
quatrz 任务监控管理 (2)
2010-10-28 23:28 1451在《Quartz 任务监控管理 (1)》http://www. ... -
Quartz任务监控管理 (1)
2010-10-28 23:27 1330转载:http://sundoctor.iteye.com/b ... -
Quartz 在 Spring 中如何动态配置时间
2010-10-28 23:25 1722转载: http://sundoctor.iteye.com ...
相关推荐
1、文件内容:spice-glib-devel-0.35-5.el7_9.1.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/spice-glib-devel-0.35-5.el7_9.1.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
perl516-perl-Locale-Maketext-Simple-0.21-19.el6.centos.alt.noarch.rpm
康威生命游戏,简单的规则到复杂的稳定
基于参考性的单部六层与六部十层(涵盖1200系列与1500系列仿真)的技术特性分析,单部六层(1200系列、1500系列都有可仿真 ),六部十层1200系列。 有较大参考性。 ,核心关键词:单部六层仿真; 1200系列; 1500系列; 六部十层; 较大参考性。,"六层与十层仿真对比:1200系列与六部1500系列深度解析"
perl516-perl-FCGI-0.74-3.el6.centos.alt.x86_64.rpm
1、文件内容:syslinux-devel-4.05-15.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/syslinux-devel-4.05-15.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
1、文件内容:selinux-policy-sandbox-3.13.1-268.el7_9.2.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/selinux-policy-sandbox-3.13.1-268.el7_9.2.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
反激式开关电源设计方案:高效稳定输出12V 6A,全套原理图与工程文件,BOM表齐全,即建即用,反激式开关电源设计方案,12V6A输出,有完整原理图,PCB工程文件,BOM表,可直接使用。 ,反激式开关电源设计方案; 12V6A输出; 完整原理图; PCB工程文件; BOM表; 可直接使用。,反激式电源设计,12V6A高效输出,完整文件及原理图供现成使用
## 功能特点 1. 数据导入 - 支持Excel文件 - 支持CSV文件 - 数据预览 - 自动识别列 2. 图表类型 - 折线图 - 柱状图 - 饼图 - 散点图 - 箱线图 - 热力图 3. 图表设置 - 自定义标题 - 主题选择 - 轴标签设置 - 样式调整 4. 其他功能 - 实时预览 - 高清导出 - 多种格式 - 简单操作
perl516-perl-Archive-Tar-1.96-1.el6.centos.alt.noarch.rpm
github官网
1、文件内容:sssd-tools-1.16.5-10.el7_9.16.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/sssd-tools-1.16.5-10.el7_9.16.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
vscode 结合目前图书购物网站的设计方案,本项目在设计时应该满足以下特点。界面设计美观大方、操作简单。功能完善、结构清晰。能够实现前台新书上架功能。能够实现前台新书分类功能。能够实现前台购物车功能。能够实现后台用户管理。能够实现后台订单管理。能够实现后台图书管理。
数据集格式:VOC格式+YOLO格式 压缩包内含:3个文件夹,分别存储图片、xml、txt文件 JPEGImages文件夹中jpg图片总计:1717 Annotations文件夹中xml文件总计:1717 labels文件夹中txt文件总计:1717 标签种类数:7 标签名称:["chuanru","cuokou","duiji","laji","liefeng","nitu","shugen"] 中文对照:穿入、错口、堆积、垃圾、裂缝、泥土、树根 每个标签的框数(注意yolo格式类别顺序不和这个对应,而以labels文件夹classes.txt为准): chuanru 框数 = 328 cuokou 框数 = 200 duiji 框数 = 884 laji 框数 = 610 liefeng 框数 = 836 nitu 框数 = 187 shugen 框数 = 356 总框数:3401 图片清晰度(分辨率:像素):清晰 图片是否增强:否 标签形状:矩形框,用于目标检测识别 重要说明:暂无 特别声明:本数据集不对训练的模型或者权重文件精度作任何保证,数据集只提供准确且合理标注
ollama Ollama 解释 转变 AI 可访问性和语言处理
e2studio开发RA2E1(5)----GPIO输入检测 CSDN文字教程:https://coremaker.blog.csdn.net/article/details/145431876 B站教学视频:https://www.bilibili.com/video/BV1oxPReEEUW/ 本篇文章主要介绍如何使用e2studio对瑞萨单片机进行GPIO输入检测。 首先需要准备一个开发板,这里我准备的是自己绘制的开发板,需要的可以进行申请。 主控为R7FA2E1A72DFL#AA0
基于PLC技术的全自动洗衣机多功能控制系统设计与实现,基于S7-200 PLC组态王组态和触摸屏的洗衣机控制系统的设计 熟悉工业电气控制系统的组成,熟悉PLC系统的设计。 全自动洗衣机能够根据衣物的质地、数量及脏污程度 来实现标准洗涤、柔顺洗涤等多功能模式。 各个功能 模式均包括洗涤、漂洗、排水、脱水等过程,各个 过程的时间设定都与不同模式有关,并且同时能够分 过程单独执行。 编制系统梯形图控制程序,利用组态 王软件进行仿真或作出实物。 重点问题:PLC的选型,如何判断模式的自动选择, 如何判断衣服的数量和脏污程度。 摘要I ABSTRACTII 1 引言- 1 - 1.1设计目的和意义- 1 - 1.2主要设计内容- 1 - 2 总体设计- 2 - 2.1设计要求- 2 - 2.2方案设计- 2 - 3 硬件设计- 4 - 3.1 PLC选择- 4 - 3.2 主电路设计- 4 - 3.3 控制电路设计- 5 - 3.4 PLC输入和输出分配- 6 - 3.5 PLC输入和输出接线图- 7 - 4 软件设计- 9 - 4.1 控制流程图- 9 - 4.2 PLC内部使用地址- 10
西门子S7-1200 PID温度控制程序(博图V15高级版)——适用于模具加热工艺,稳定工作,可二次开发与扩展,西门子S7-1200 PID温度控制程序,PID参数经过预调节和精确调节之后得出,程序采用博图V15高级版编写,适合用于不带冷却功能的模具加热生产工艺上,项目上运用已稳定工作多时,带详细注释,可进行二次开发和扩展,也可直接使用 本程序采用博图V15编写,需要博图版本高于V15,版本低于V15的,请先升级至博图V15 ,西门子S7-1200; PID温度控制程序; 预调节和精确调节; 博图V15高级版; 模具加热生产; 稳定工作; 详细注释; 二次开发; 扩展; 版本升级,“西门子S7-1200 PID温控程序,稳定应用于无冷源模具加热工艺”
perl516-perl-Version-Requirements-0.101022-100.el6.centos.alt.noarch.rpm
百度API集成下的ASP.NET点餐系统项目:三层架构实现,管理员后台与商家前台功能完备,asp.net的点餐系统项目,才答辩完,可以使用。 使用了百度API,也是三层架构,有管理员后台和商家前台 ,asp.net点餐系统项目; 百度API; 三层架构; 管理员后台; 商家前台,"基于ASP.NET的三层架构点餐系统项目,整合百度API,答辩后可用"