2009-11-15 14 views
1

我試圖按照grails tutorial herelist.gsp FileNotFoundException當遵循Grails腳本教程與應用程序引擎插件

當我創建使用create-controller XXX.Card並修改它使用腳手架按照教程一個新的控制器:

package XXX 

class CardController { 
    def scaffold = Card 
} 

我出現以下情況例外,當我點擊XXX.CardController

org.codehaus.groovy.runtime.InvokerInvocationException: groovy.lang.MissingMethodException: No signature of method: static XXX.Card.list() is applicable for argument types: (org.codehaus.groovy.grails.web.servlet.mvc.GrailsParameterMap) values: [[max:10, action:list, controller:card]] 
    at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:54) 
    at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43) 
    at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:121) 
    at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:54) 
    at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:342) 
Caused by: groovy.lang.MissingMethodException: No signature of method: static XXX.Card.list() is applicable for argument types: (org.codehaus.groovy.grails.web.servlet.mvc.GrailsParameterMap) values: [[max:10, action:list, controller:card]] 
    at XXX.CardController$_closure2.doCall(script1258397512682.groovy:14) 
    at com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:100) 
    at XXX.CardController$_closure2.doCall(script1258397512682.groovy) 
    at com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:100) 
    ... 5 more 

我m使用Grails 1.1.1和app-engine 0.8.5和gorm-jpa 0.5插件。

我在做什麼錯?

這裏是我用來重現此問題的腳本:

rm -rf ~/.grails/1.1.1/projects/XXX 
grails create-app XXX 
cd XXX 
grails install-plugin gorm-jpa 
grails install-plugin app-engine # Note: specify JPA when prompted 
grails create-domain-class XXX.Card 
grails create-controller XXX.Card 
cat > grails-app/controllers/XXX/CardController.groovy <<EOF 
package XXX 

class CardController { 
    def scaffold = Card 
} 
EOF 
cat > grails-app/domain/XXX/Card.groovy <<EOF 
package XXX 

class Card { 

    List emails 

    static hasMany = [emails:String] 
} 
EOF 
grails app-engine 
+1

您嘗試點擊的URL看起來不正確... URL中的項目名稱在哪裏?它應該是http:// localhost:8080/project/card不應該嗎?不過,這不是錯誤的URL會導致你看到的錯誤,而且錯誤消息似乎表明你實際上在URL中有一個XXX。 – billjamesdev

回答

1

我只是重新創建您的方案通過以下步驟,使用Grails 1.1.1:當我訪問http://localhost:8080/XXX/card

grails create-app XXX 
cd XXX 
grails create-domain-class XXX.Card 
grails create-controller XXX.Card 
-- Edited grails-app\Controllers\XXX\Card.groovy removing the index action and adding the scaffold declaration "def scaffold = Card" 
grails run-app 

,我被給了卡類的適當的列表頁面(其中沒有條目,並且沒有列,因爲我沒有向卡添加任何東西)

注意小寫字母「car d「(你似乎沒有錯),這很重要。 URL中的控制器路徑默認以小寫字母開頭。

希望這會有所幫助。如果您無法按照這些步驟進行操作,那麼我會查看您安裝的插件。

1

你有沒有試過安裝gorm-jpa插件?我不認爲list()在app-engine插件中實現,而是在gorm-jpa中實現。

jdo沒有支持gorm。

+0

啊,謝謝。良好的發現,我錯過了我的原創。我已經將問題描述重寫爲包含該插件,但似乎沒有解決問題。往上看。 – emmby