0

JSP フォームを使用して PostgreSQL に書き込むときに、日付変数の処理に問題があります。いくつかの素晴らしいヒントがありましたが、まだ正しく理解できていません。JSP から Java に文字列を渡していると思います。ここで、日付の「セッター」と「ゲッター」が「タイム ゾーンのない日付」列で PSQL に書き込みます。

Date に関連する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 側で日付フィールドを使用しているもう 1 つの理由です。

JAVA 側:

.... (いくつかのコード) ....

  private java.util.Date campemp= null; 

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

... (より多くのコード) ... ++ Set と Get ++

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


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

... (より多くのコード) ... ++ LOAD ++

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

... (より多くのコード) ... ++ WRITE TO DB ++

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: 属性 "campemp" の文字列 "04/07/2012 19:12" をクラス "java.util.Date" に変換できません: プロパティ エディタが PropertyEditorManager に登録されていません

DB日付フィールドとJSP入力に影響を与えずにString to Dateを解析するための回避策についてのアイデアは大歓迎です..どうもありがとうございました.

よろしく、

ロブ

4

1 に答える 1

1

org.apache.jasper.JasperException: 属性 "campemp" の文字列 "04/07/2012 19:12" をクラス "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 に答える