您能告诉我为什么在以下方式向控制器添加新操作时,我会收到HTTP状态404资源不可用的错误:
当我输入浏览器地址:http://localhost:8080/myApp/user/abc时,它返回不可用的资源。重新开始的grails没有帮助。如果我输入http://localhost:8080/myApp/user/index,它会按预期工作。
由于
答案 0 :(得分:2)
我刚刚使用Grails 1.3.7进行了测试。您可以使用redirect(action: "index")
安全地结束控制器操作,并且不会抛出错误。
我猜你这样做了:
def index = { [foo: "bar"] }
def abc = { [foo: "bar"] }
在这种情况下,您需要index
和abc
的专用视图。
如果您改为这样做:
def abc = { redirect(action: "index") }
您将被正确重定向。
答案 1 :(得分:1)
您是否创建了一个视图来执行您的操作?通常你会有一个 的grails-app /视图/用户/ abc.gsp
如果您没有视图,则会收到404错误,因为您的控制器会尝试将浏览器指向不存在的页面。
答案 2 :(得分:0)
经验教训:如果出现此行为,请确保在其他操作中没有错误的代码语法。
我解决了这种奇怪的情况(无论如何!)。事实证明我在顶级/第一个动作中缺少一个右大括号,但在我的第二个动作中有一个额外的右大括号。不知道这怎么可能编译,但显然它确实如此,因为当我进一步添加示例新测试操作时,他们最终工作(这似乎很奇怪)。当我修复括号问题时,第二个动作也适用
注意,我正在使用当前的Grails示例,而不使用完整的IDE,因此IDE可能会捕获此错误。
答案 3 :(得分:0)
遇到相同的错误,并通过强制我的项目完全重新编译来修复。这就是说,我删除了out
目录中所有.class
文件的内容。重新运行项目,然后重新构建所有文件,并且预期的控制器操作可用。