日期:2014-05-17  浏览次数:20771 次

struts2 如何修改Date数据
数据库里的字段"出生日期"birth是Date类型
struts2取得后直接输入的是英文日期
使用标签<s:date>如下:
<s:date name="Birth" format="yyyy-MM-dd" id="date" /> 
<s:property value="date" /> 
可以在JSP页面显示类似:1999-01-03 的日期格式..

现在我要在JSP页面点击,对日期进行修改
jsp页面代码是:
<s:date name="Birth" format="yyyy-MM-dd" id="date" /> 
<s:textfield name="date"></s:textfield>
action是:
this.setBirth(student.getBirth());
jsp取得1999-01-03 ,改成2011-05-03 
提交表单后数据没有改变...

把<s:textfield name="date"></s:textfield>
改成<s:textfield name="Birth"></s:textfield>
在jsp取得类似5/1/09 12:00:00 上午.000的日期格式,改成7/2/11 12:00:00 上午.000
提交表单后可以改变数据....


我如何可以在取得格式为yyyy-MM-dd的日期并成功修改..
给位大神如果要获取并修改数据库里的date类型数据,应该怎么设计???


------解决方案--------------------
做个全局的日期类型转换器
------解决方案--------------------
我写的时候是在程序里面是String,数据库里面也是String类型,然后,使用My97Date日期控件(这个控件生成的日期类型就是string),或者自己编写个程序生成日期都可以啊。
<script type="text/javascript" src="/bookRoom/js/My97DatePickerBeta/My97DatePicker/WdatePicker.js"></script>

使用的时候是:
<input type="text" id="bookDay" name="bookDay" size="40px" onfocus="WdatePicker({skin:'default',dateFmt:'yyyy-MM-dd'})" class="Wdate" />

注意name="bookDay"和action里面用来接收数据的bookDay保持一致,写个getter、setter方法,在action的方法里面写上:
ReserveBean rBean = new ReserveBean();//ReserveBean是我接收数据的bean
rBean.setBookDay(bookDay);

这样就可以了。

如果数据库里面一定要是Date类型的话,在和数据库进行操作的代码里改下类型就可以了。
------解决方案--------------------
后台存储之前做个格式转换, 
SimpleDateFormat sdf = new SimpleDateFormat( " yyyy-MM-dd HH:mm:ss " );
日期格式定义成你自己的。
日期转字符串:
 String str = sdf.format(new Date());
字符串转日期:
 Date date = sdf.parse( " 2008-07-10 19:20:00 " );

calendar也不错,不过没必要用,上面的完全可以满足你的需要。