0

当我使用 JSP 表单写入 PostgreSQL 时,我在处理日期变量时遇到了问题。有一些很棒的提示,但仍然无法正确使用。我相信我正在将一个字符串从 JSP 传递到 JAVA,它是一个日期“setter”和“getter”在“没有时区的日期”列上写入 PSQL。

以下是与日期相关的部分JSP 代码:

....(一些代码)....

SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm");

....(模式代码)....

<%

if (action.equals("add")) {
  .
  .
  .

  newCampaign.setCampempDate(dateFormat.parse(request.getParameter("campemp")));

  newCampaign.add();
}  
%>

....(更多代码)....

               <input name="campemp" type="text" class="datePickBox" id="campemp"
 onBlur="javascript:checkFormat(this)" value="<%= defaultCampaign.getCampempDate() != null 
? dateFormat.format(defaultCampaign.getCampempDate()) : dateFormat.format(new 
java.util.Date()) %>" size=20>

....(其余代码)....

值得一提的是,在输入时我还使用了一个以正确格式传递日期的日历……这是我在 JSP 端使用日期字段的另一个原因。

在 JAVA 方面:

....(一些代码)....

  private java.util.Date campemp= null; 

  private SimpleDateFormat userDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");

...(更多代码)... ++ 设置和获取 ++

public void setCampempDate(java.util.Date aCampemp) {    
    this.campemp= aCampemp;
  }


 public java.util.Date getCampempDate() {
    return this.campemp;  
  }

...(更多代码)... ++ 加载 ++

  public void load(ResultSet rs) throws SQLException {
   this.setId(rs.getLong("campkeydbid"));
    .
    .
  this.setCampempDate(rs.getDate("campemp"));
}

...(更多代码)... ++ 写入数据库 ++

public boolean add() throws SQLException {
boolean success = false;
if (costingEnabled) {
  String call = "select " + getStoredProcedureMapper().getPrefix() + "_Add(?,?,?,?,?,?,?,?,?,?)";
  DataSource ds = PoolMan.findDataSource("mydatabase");
  Connection conn = null;
  try {
    conn = ds.getConnection();
    PreparedStatement pst = conn.prepareStatement(call);
      .
      .
    pst.setTimestamp(10, new Timestamp(this.getCampempDate().getTime())); 
 ResultSet rs = pst.executeQuery();
    if (rs.next()) {
      .
      .

...(更多代码)...

存储过程上的“_Add”是正确的,因为如果我“硬编码” pst.SetTimestamp 上的日期,它就可以工作

我得到的错误如下:

org.apache.jasper.JasperException:无法将字符串“04/07/2012 19:12”转换为属性“campemp”的类“java.util.Date”:属性编辑器未向 PropertyEditorManager 注册

任何关于将字符串解析为日期而不影响数据库日期字段和 JSP 输入的解决方法的想法将不胜感激.. 非常感谢。

问候,

4

1 回答 1

1

org.apache.jasper.JasperException:无法将字符串“04/07/2012 19:12”转换为属性“campemp”的类“java.util.Date”:属性编辑器未向 PropertyEditorManager 注册

您以格式传入Date,因此您需要使用String04/07/2012 19:12

dd/MM/yyyy HH:mm

从您发布的代码来看,您似乎正在使用

private SimpleDateFormat userDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");

作为格式SimpleDateFormat

于 2012-07-09T02:47:23.750 回答