grails错误:请求的资源不可用

时间:2011-08-03 19:19:51

标签: grails

您能告诉我为什么在以下方式向控制器添加新操作时,我会收到HTTP状态404资源不可用的错误:

  • 首先,我在Grails生成的列表操作中添加了一个声明println“in list action”,以确保我看到对控制器进行的文件更新。然后这个println出现在控制台上。
  • 我在控制器中添加了一个新动作“abc”,直接从索引动作复制其代码,即使其简单地重定向到列表动作。

当我输入浏览器地址:http://localhost:8080/myApp/user/abc时,它返回不可用的资源。重新开始的grails没有帮助。如果我输入http://localhost:8080/myApp/user/index,它会按预期工作。

由于

4 个答案:

答案 0 :(得分:2)

我刚刚使用Grails 1.3.7进行了测试。您可以使用redirect(action: "index")安全地结束控制器操作,并且不会抛出错误。

我猜你这样做了:

def index = { [foo: "bar"] }
def abc = { [foo: "bar"] }

在这种情况下,您需要indexabc的专用视图。

如果您改为这样做:

def abc = { redirect(action: "index") }

您将被正确重定向。

答案 1 :(得分:1)

您是否创建了一个视图来执行您的操作?通常你会有一个     的grails-app /视图/用户/ abc.gsp

如果您没有视图,则会收到404错误,因为您的控制器会尝试将浏览器指向不存在的页面。

答案 2 :(得分:0)

经验教训:如果出现此行为,请确保在其他操作中没有错误的代码语法。


我解决了这种奇怪的情况(无论如何!)。事实证明我在顶级/第一个动作中缺少一个右大括号,但在我的第二个动作中有一个额外的右大括号。不知道这怎么可能编译,但显然它确实如此,因为当我进一步添加示例新测试操作时,他们最终工作(这似乎很奇怪)。当我修复括号问题时,第二个动作也适用

注意,我正在使用当前的Grails示例,而不使用完整的IDE,因此IDE可能会捕获此错误。

答案 3 :(得分:0)

遇到相同的错误,并通过强制我的项目完全重新编译来修复。这就是说,我删除了out目录中所有.class文件的内容。重新运行项目,然后重新构建所有文件,并且预期的控制器操作可用。