Grails重定向动作索引

时间:2012-10-03 07:51:51

标签: grails redirect indexing

所以我有一个带有重置(删除一些数据),索引和其他方法的控制器,所以在重置方法结束时我有一个重定向到索引方法。 有什么区别:

redirect(action: "index", id: params.id)

redirect(action: index, id: params.id)

第一个完美地工作,在索引方法中重定向我,但第二个重定向我在一个不同的方法。(getEndMonthsList这是控制器中的最后一个方法)

2 个答案:

答案 0 :(得分:2)

您在Grails 2之前显示的两个变体是有效的,因为只有闭包可用于定义操作。所以你可以重定向到'index'或index,因为你用第二种方法引用了closure属性,而Grails会从它的名字构建完整的URL。它稍慢,所以最好使用String方法。

在2.0中,事情发生了变化,允许将方法用作行动,并且是首选方法。因此,如果你有一个index方法,它不再是类中可以引用的公共字段,就像任何其他变量一样,它是一个不能直接通过名称引用的方法。所以字符串方法是唯一有效的方法。

我尝试使用非字符串方法来重现这一点,但它并没有按照你描述的方式失败,当索引操作被定义为一个方法(如预期的那样)并且在它被定义为一个闭包(再次,如预期的那样)。

答案 1 :(得分:0)

在第一种情况下,Grails按名称调用控制器方法。 在第二种情况下,Grails获取闭包名称并按名称调用控制器方法。

请参阅org.codehaus.groovy.grails.web.metaclass.RedirectDynamicMethod#establishActionName