2011-11-07 26 views
2

我有有日期信息型號:日期在Playframework

package models; 
import java.util.Date; 
import javax.persistence.*; 

import play.data.binding.As; 
import play.db.jpa.*; 
@Entity 
public class testing extends Model { 
… 
public Date date; 
// I even tried public @As("yyyy-MM-dd") Date date; 

… 
public test1 {…date…} 
} 

然後我有收到用戶提交的日期(或其他資料)控制器,保存到數據庫

public static void post(… @As("yyyy-MM-dd") Date date, …) { 
} 

其他信息工作好吧,除了日期,我可以將它們全部保存在數據庫中。運行後,所有的信息都發布到MySQL,但日期字段仍然是空

調試信息日期控制器如下: 2011年11月7日12:00:00 AM 因此,我認爲,這可能是在衝突控制器和型號的類型。但是如何? 請幫幫我。

+0

你可以從你的控制器發佈代碼,將日期放在持久類上並保存它嗎?我想你錯過了一些東西,因爲正如你所說,日期在你的控制器中可用。 –

回答

4

提供正確的格式Play 1.2.3/1.2.4-RC2,

它處理日期發佈正確,但我做了2個小調整:

1)在日期聲明之前添加@Temporal(TemporalType.DATE)。沒有它的日期是時間戳(日期包括時間),但我認爲這不是問題:

... 
@Entity 
public class Testing extends Model { 
    ... 
    @Temporal(TemporalType.DATE) 
    public Date date; 
    ... 
} 

2)在application.conf我configuired日期格式爲我所有的語言環境

... 
# Date format 
# ~~~~~ 
date.format=yyyy-MM-dd 
date.format.it=dd/MM/yyyy 
date.format.en=MM/dd/yyyy 
date.format.fr=dd/MM/yyyy 
# 

正確播放文章的日期,主要根據當前語言環境正確驗證參數(例如Long/Integer/Float/Double/BigDecimal/Date)。

希望這會有所幫助。

2

控制器中的As註釋在此處告訴Play如何將您的請求參數轉換爲日期。

之後,你有一個日期的實例,你不必擔心在模型中的格式。

嘗試在您的控制器中查看「request.params.get(」date「)的值是什麼,它不是格式,因爲您將其放入您的As註釋中,然後Play無法將字符串轉換爲日期。

我覺得這是你的問題。所以,你必須改變你的觀點發表權字符串或改變你作爲註釋根據我使用你得到的字符串

+0

request.params.get(「date」)返回2011-11-07(與我的變量相同);在使用(@As(「yyyy-MM-dd」)Date date)時,變量日期返回到2011年11月7日12:00:00 AM,我認爲這是正確的日期類型。 –

+0

所以一切都好「2011年11月7日中午12:00:00」只是你的可變日期toString,你的日期還行 –

+0

謝謝Seb Cesbron。雖然控制器已經使用As註釋正確處理日期,但它仍然不能更新到數據庫,而其他字段(字符串,雙精度)不能更新。我不知道這會發生什麼? –

相關問題