遇到了struts2前后台日期-字符串转换问题

atpx309391907 2011-04-24 07:54:01
没做任何处理的情况下,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,显示倒是省事了,但总感觉不妥。尤其是要查询时间范围的时候就有问题了。大家发表一下意见。
...全文
556 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
redlotus_lyn 2011-04-25
  • 打赏
  • 举报
回复
对了日期最好使用util.date
redlotus_lyn 2011-04-25
  • 打赏
  • 举报
回复
struts2默认有一个日期类型转换器。

在页面循环的时候使用

<s:date />标签转换成你自己的格式即可。

<s:date name="属性名" format="yyyy-MM-dd">
coffeeJavaW 2011-04-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 dong_very_good 的回复:]

import java.sql.Date;
用这个包中的Date就行
[/Quote]

这里的“显示的是其他类型”应该改为“其他的形式”
coffeeJavaW 2011-04-25
  • 打赏
  • 举报
回复
数据库是以什么形式保存的?Data类型?
若是Data类型,且数据库中显示的是正确的格式(横线间隔的),而jsp上显示的是其他类型的话,说明页面显示需要格式化的,可以使用JSTL的fmt来进行格式化
  • 打赏
  • 举报
回复
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;
}

}
写转换类
XiangZhiLiu 2011-04-25
  • 打赏
  • 举报
回复
自己定义数据类型~
覆盖struts的数据类型~~
liuyuhua0066 2011-04-25
  • 打赏
  • 举报
回复
其实action中Date类型完全可以用String替代,也就避免了Struts2的日期与字符转换。
dong_very_good 2011-04-24
  • 打赏
  • 举报
回复
import java.sql.Date;
用这个包中的Date就行
O溺水的鱼0 2011-04-24
  • 打赏
  • 举报
回复
有个simpleDateFormatter类,可以控制日期的展示形式,具体楼主去找下。自己动手,效果更好。
LinApex 2011-04-24
  • 打赏
  • 举报
回复

如果要用到 varchar 类型的话 Sql 语句 可以使用 between 开始时间 and 结束时间 关键字 来 查询

这个 不能精确的求时间差

用到 dateTime 用来保存 时间戳

范围性的话很好控制,如:求 一个用户在 1天类发了多少帖子 一个月之类 等等功能

67,538

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧