2012-05-15 54 views
3

我試圖在我的控制器中綁定Date params。我在某處讀到,如果我的日期格式爲yyyy-MM-dd HH:mm:ss.S,那應該就足夠了。但這不起作用。我讀的另一個選項是將_day,_month,_year等後綴添加到我想要解析的屬性中,但此方法也不起作用。Grails - 控制器中的日期綁定

所以它基本上是一對多的關係,當多方面是日期(一個行動有一個VisitList<Visit>和訪問有日期)。

// domain classes 
class Action { 
    List<Visit> visitList 
    static hasMany = [visitList: Visit] 
} 

class Visit { 
    Action action 
    static belongsTo = [action: Action] 

    Date date 
    String description 
} 

我解析所有PARAMS的動作實例是這樣的:

// in controller 
def save(){ 
    Action actionInstance = new Action() 
    action.properties = params 
    action.save() 
} 

日期從視圖中發送的格式是:

visitList[0].date=2012-05-15 00:00:00.0000 

但具體日期仍然是空。訪問還有一個描述屬性,它運行良好。該屬性的參數是:

visitList[0].description=description 

感謝您的任何建議或意見。

回答

0

沒有看到更多的代碼,很難說。你可能想試試Command Object。你的輸入來自哪裏?一個看法?如果是這樣,通常使用標籤來控制輸入。如果你不使用這些,你可能不得不使用DateFormat {提示,使用parse()方法}手動解析日期。

1

您是否嘗試先保存Visit,然後保存Action?如果不工作,你可能要日期從字符串轉換爲日期,Date.parse()方法是在Grails的2.0大幅貶值,試試這個:

Date date = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").parse(dateString) 
def action = new Action() 
def visit = new Visit(date: date, description: description?:"", action: action) 
visit.save() 
action.visitList.add(visit) 
action.save() 

-HTH

+0

感謝。我想立刻保存它,並且只用action.params = params或者像這樣解析所有的屬性。 –

+0

不贊成使用的'Date.parse()'是接受單個String參數的Java方法。 groovy方法['Date.parse()'](http://groovy.codehaus.org/groovy-jdk/java/util/Date.html#parse%28java.lang.String,%20java.lang.String% 29)採用兩個參數肯定不會被棄用。 – ataylor