2013-11-15 20 views
0

我是Grails的新手,當我在所有域內容上運行項目時,在我的三個域中的兩個域中獲取此錯誤。作品域名Grails中的類[]的屬性[]不能爲空錯誤

class Location { 

    def scaffold = true 


    String company 
    String name 
    String address 
    static belongsTo=[company:Company] 

    static constraints = { 

} 

} 

不工作是

class Report { 

    def scaffold = true 

    String title 
    String location 
    Date  published 

    static belongsTo=[location:Location] 

    static constraints = { 

} 
} 

我看不出是trowing錯誤的結構或語法問題域。我一直在嘗試各種增加和減少,並且似乎無法找到任何解決此錯誤的基本級別的東西。再次,我剛開始使用Grails和Groovy

+0

何時發生錯誤?它究竟是什麼意思? – Eylen

+0

當我點擊創建時我得到-----創建報告 類[class lcm.Report]的屬性[location]不能爲null class [class lcm.Report]的屬性[published]不能爲null Property [title ]的類[lcm.Report]不能爲空 –

回答

1

完成@ araxn1d所告知的更改後,還應該檢查約束條件。默認情況下,所有屬性不可爲空(這就是爲什麼你得到例如用於title屬性錯誤)

如果你已經在你的數據庫中的數據,你有兩個選擇:

  1. 更新數據庫和在每個表格或行中設置正確的值
  2. 將域中的每個屬性設置爲可以爲空。例如

    靜態約束= { 標題爲空的:真正的 }

+0

我只是想加入{可空:真}和得到這個錯誤---- URI /LCM /報告/列表 類 groovy.lang.MissingMethodException 消息 法無簽名:LCM。 Report.list()適用於參數類型:()values:[]可能的解決方案:list(),list(java.util.Map),last(),last(java.lang.String),last(java。 util.Map),first()------數據庫爲空我希望用戶能夠輸入數據 –

+0

您是否試圖做一個乾淨的並重新運行應用程序?當我更改一個域類時,有時發生這個錯誤,但做一個乾淨的,再次運行該應用程序的作品 – Eylen

+0

它應該是{propertyName nullable:true},你錯過了這個名字,即你必須爲每個*可爲空的屬性。查看我的答案獲取更多信息。 –

0

好像錯誤是在這一行:

String location 

位置String類型,而應是Location類型。與位置域中的String company相同應爲Company company

+0

做了更改,我仍然收到相同的錯誤創建報告 類[class lcm.Report]的屬性[location]不能爲空 class [published] of class [ class lcm.Report]不能爲空 類[class lcm。報告]不能爲空 –

1

你創建一個報告沒有屬性設置?默認情況下,Grails將檢查所有屬性是否爲空。如果你想允許用戶離開某個字段未定義(空),那麼你必須明確地告訴Grails的在constraints map

static constraints = { 
    propertyName nullable: true 
} 
+0

我試過了,它沒有解決問題。我甚至嘗試過沒有運氣的propertyName(nullable:true)的語法,並且在做出更改之後,araxn1d提示我得到了錯誤 - 未能將類型爲java.lang.String的屬性值轉換爲屬性公司所需的類型lcm.Company;嵌套的異常是java.lang.IllegalStateException:無法將屬性公司的[java.lang.String]類型的值轉換爲所需的類型[lcm.Company]:找不到匹配的編輯器或找到轉換策略 –

+0

那麼,您有另一個名爲lcm的類。公司和你的「公司」財產是一個字符串。如果您將屬性設置爲lcm.Company值,那麼它將不起作用(Groovy不知道如何將lcm.Company轉換爲字符串,這就是您所得到的錯誤)。更改類型並重試。 –

0

我認爲問題是,你已經改變了域的結構在您爲域生成自動創建的視圖/控制器之後的類。

我通過刪除違規域以及控制器/視圖文件並重新創建它們來修復它。我相信你可以通過並找到有問題的代碼。

相關問題