没做任何处理的情况下,struts2有自己的类型转换器。
比如我的代码
action类
public class StockAction extends ActionSupport implements ModelDriven<StockModel>{ private StockModel stockModel = new StockModel();
public StockModel getModel() {
return stockModel;
}
。。
}
StockModel类:
public class StockModel {
private int sid;
private int pid;
private String pname;
private Date sdate;
。
}在前台输入2000-11-11这个字符串,自动转成Date类型传给action中的stockModel.
当现实的时候也问题,自动将Date类型现实成YYYY-MM-DD。
可是当我插入数据的时候,最新一条数据,就是刚刚插入的那条却现实成格林威治格式(已经重发送请求,重新从数据库中查出数据),
再次刷新一下又变正常。不知道是为什么。在网上找了一些手写的转换期代码仍是这个问题。有人把数据库中Date类型直接该为varchar,显示倒是省事了,但总感觉不妥。尤其是要查询时间范围的时候就有问题了。大家发表一下意见。
比如我的代码
action类
public class StockAction extends ActionSupport implements ModelDriven<StockModel>{ private StockModel stockModel = new StockModel();
public StockModel getModel() {
return stockModel;
}
。。
}
StockModel类:
public class StockModel {
private int sid;
private int pid;
private String pname;
private Date sdate;
。
}在前台输入2000-11-11这个字符串,自动转成Date类型传给action中的stockModel.
当现实的时候也问题,自动将Date类型现实成YYYY-MM-DD。
可是当我插入数据的时候,最新一条数据,就是刚刚插入的那条却现实成格林威治格式(已经重发送请求,重新从数据库中查出数据),
再次刷新一下又变正常。不知道是为什么。在网上找了一些手写的转换期代码仍是这个问题。有人把数据库中Date类型直接该为varchar,显示倒是省事了,但总感觉不妥。尤其是要查询时间范围的时候就有问题了。大家发表一下意见。
解决方案 »
- 关于hibernate 的左外连接
- 使用hibernate映射格式完全相同的几张表,如何给这些映射出来的类设计一个父类,可以用这个父类表示不同的表的对象?
- 开心网 表情 实现方式?
- 请高人进内.. axis webservice 开发
- EJB求助:First component in name xxx not found
- 怎样比较两个页面变量的大小(STRUTS)?
- 从头开始学
- Java变量的问题。
- JAVA 如何获取被目录下添加的文件名或则被删除文件名?
- javax.json下的JsonObject如何转化成list或是map
- java jdk版本问题
- MyEclipse自带的MyEclipse Tomcat无法启动
如果要用到 varchar 类型的话 Sql 语句 可以使用 between 开始时间 and 结束时间 关键字 来 查询 这个 不能精确的求时间差 用到 dateTime 用来保存 时间戳 范围性的话很好控制,如:求 一个用户在 1天类发了多少帖子 一个月之类 等等功能
用这个包中的Date就行
若是Data类型,且数据库中显示的是正确的格式(横线间隔的),而jsp上显示的是其他类型的话,说明页面显示需要格式化的,可以使用JSTL的fmt来进行格式化
覆盖struts的数据类型~~
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;import org.apache.struts2.util.StrutsTypeConverter;public class DateConvert extends StrutsTypeConverter { @Override
public Object convertFromString(Map context, String[] value, Class toType) {
// TODO Auto-generated method stub
SimpleDateFormat sdFormat = new SimpleDateFormat("yyyy/MM/dd");
SimpleDateFormat sdFormat1 = new SimpleDateFormat("yyyy-MM-dd");
DateFormat[] dFormat = new SimpleDateFormat[]{sdFormat,sdFormat1};
Date date = null;
for(DateFormat dd : dFormat){
try {
date = dd.parse(value[0]);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
continue;
}
}
return date;
} @Override
public String convertToString(Map arg0, Object arg1) {
// TODO Auto-generated method stub
return null;
}}
写转换类