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を解析するための回避策についてのアイデアは大歓迎です..どうもありがとうございました.
よろしく、
ロブ