没做任何处理的情况下,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,显示倒是省事了,但总感觉不妥。尤其是要查询时间范围的时候就有问题了。大家发表一下意见。

解决方案 »

  1.   

     
    如果要用到 varchar 类型的话  Sql 语句 可以使用 between 开始时间 and 结束时间 关键字 来 查询  这个 不能精确的求时间差  用到 dateTime  用来保存 时间戳  范围性的话很好控制,如:求 一个用户在 1天类发了多少帖子 一个月之类  等等功能
      

  2.   

    有个simpleDateFormatter类,可以控制日期的展示形式,具体楼主去找下。自己动手,效果更好。
      

  3.   

    import java.sql.Date;
    用这个包中的Date就行
      

  4.   

    数据库是以什么形式保存的?Data类型?
    若是Data类型,且数据库中显示的是正确的格式(横线间隔的),而jsp上显示的是其他类型的话,说明页面显示需要格式化的,可以使用JSTL的fmt来进行格式化
      

  5.   

    struts2默认有一个日期类型转换器。在页面循环的时候使用<s:date />标签转换成你自己的格式即可。<s:date name="属性名" format="yyyy-MM-dd">
      

  6.   

    其实action中Date类型完全可以用String替代,也就避免了Struts2的日期与字符转换。
      

  7.   

    自己定义数据类型~
    覆盖struts的数据类型~~
      

  8.   

    package util;import java.text.DateFormat;
    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;
    }}
    写转换类