google-app-engine - 使用App Engine插件遵循Grails脚手架教程时,list.gsp FileNotFoundException

标签 google-app-engine grails

我正在尝试遵循grails tutorial here

当我使用create-controller XXX.Card创建新的 Controller 并按照教程将其修改为使用脚手架时:

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

我正在将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

最佳答案

我只是使用Grails 1.1.1通过以下步骤重新创建了您的方案:

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

当我访问http://localhost:8080/XXX/card时,为我提供了Card类的相应列表页面(该页面没有条目,也没有列,因为我没有向Card添加任何内容)

请注意小写的“卡片”(您似乎正确),这一点很重要。默认情况下,URL中的 Controller 路径以小写字母开头。

希望这可以帮助。如果您无法按照这些步骤操作,那么请看一下您安装的那些插件。

关于google-app-engine - 使用App Engine插件遵循Grails脚手架教程时,list.gsp FileNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1736338/

相关文章:

java.lang.NoClassDefFoundError : java. rmi.server.UID 是受限类

python - 如何在ndb中按sum查询

google-app-engine - 子域阻止我的搜索结果在页面排名中上升

Java:获取下载的附件的文件名(HttpClient,PostMethod)

grails - 在测试中声明SpringSecurity编码的密码

grails - 如何在grails中保存对象

google-app-engine - 使用 Google App Engine 在您的域上安全登录

python - 如何删除通过 Appengine 中的 Key 属性连接的实体连接的所有实体

grails - g:每张 table

javascript - 无法解析日期 javascript 到 Grails