当前位置: 代码迷 >> Java Web开发 >> 怎么在action中接收jsp页面传来的日期类型的数据
  详细解决方案

怎么在action中接收jsp页面传来的日期类型的数据

热度:7341   发布时间:2013-02-25 21:17:54.0
如何在action中接收jsp页面传来的日期类型的数据
具体情况如下: 
  struts+hibernate做的小程序。 
  一个注册页面register.jsp ---- 一个实体类 User ----- 一个AddUserAction 
  其中注册页面中有个项是date类型的(让用户填写注册日期)。 
  该页面提交给AddUserAction 
  在改action中 
  User user = new User(); 
  user.setUsername(request.getParameter("username")); 
  .... 
  现在到set注册时间这项了,我是这样写的,但不行。 
  user.setCreatetime(new Date(request.getParameter("createtime"))); 
  又这样写了 
  user.setCreatetime(new Date(user.getCreatetime("createtime"))); 
  ... 
  都是错的。好像是报的空指针吧。。 
   
  其它的那些配置的东西都是没问题的,麻烦大家告诉我在action中怎么接收从jsp页面中传过来的日期类型的数据 
  使其能正确地插入到数据库(mysql)。 

  麻烦大家给个详细点的说明 
  在此谢谢了! 
 

------解决方案--------------------------------------------------------
时间为什么要让用户输入呢,输入的内容你还要去判断他是否合法等等,所以直接使用一个时间控件,文本框得到焦点就触发控件去选择时间。
------解决方案--------------------------------------------------------
如果你采用的是struts1的话,把页面的值让FormBean去接,就是如果你需要页面的值时从FormBean对象中去取,如果是FormBean中的时间是java.sql.date类型的话,struts会自动封装成此对象的,但java.util.Date的话是不自动封装的!
你的不用自己写User了,使用FormBean即可,你的null指针异常说明你没有从页面获取到值,而且,页面中的日期是要有制定的格式的,一般是YYYY-MM-DD即1988-09-23这样的格式!自己再研究一下吧,只有自己研究明白的才是自己的,加油了
------解决方案--------------------------------------------------------
注册时间不用客户端提交吧,
提交上来以后new 一个date不行了
最简单,还准确。

有必要记录精确到“用户按下注册按钮的时间”的话另议。

可以自己解析字符串到date
或者struts2的话弄一个转换器,
lz自己google一下吧

good luck
------解决方案--------------------------------------------------------
request.getParameter() 等都是字符串 而你数据库是Date类型,需要转换下
------解决方案--------------------------------------------------------
如果LZ是在要转的话可以采用如下代码(不过不建议因为用户输入的字符串要符合SimpleDateFormat中的格式要求才行):
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddhhmmss");
String dateString = "20071128175545";
Date date = df.parse(dateString);

user.setCreatetime(date); 


------解决方案--------------------------------------------------------
在数据库中我们一般都是用的timestamp类型的,在页面上都是用时间空间来做。
可以通过 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");进行下格式的转换。
------解决方案--------------------------------------------------------
探讨
引用:
如果LZ是在要转的话可以采用如下代码(不过不建议因为用户输入的字符串要符合SimpleDateFormat中的格式要求才行):
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddhhmmss"); 
String dateString = "20071128175545"; 
Date date = df.parse(dateString);

user.setCreatetime(date);

  不行啊 ,从页面传过来的是 date型的。在action中接收不到呀。

------解决方案--------------------------------------------------------
如果你用的是 Struts 就根本不需要这样了

 二呢 一般也不这么写。 如果你想把注册时间存进去 直接在 action 中new 个Date() 当前时间即可

 如果只为显示 感觉用 String 类型 更方便 

 从jsp 传到 ACTION 都是 String 类型的
------解决方案--------------------------------------------------------
用Struts的话java.util.Date转换一劳永逸的方法就是写个日期转换器,
比如
package zizz.struts;
  
import java.util.Date;
  
import org.apache.struts.action.ActionForm;
import org.apache.commons.beanutils.ConvertUtils;
  
/**
* UserForm对应着提交页面的网页表单信息
* @author chen yuzhe
*
*/
public class UserForm extends ActionForm{

static{
ConvertUtils.register(new DateConverter(), Date.class);
  相关解决方案