如何在Grails中创建控制器的“克隆”?

时间:2009-06-26 05:35:46

标签: java grails groovy gsp

我有一个从主布局加载的菜单。在菜单中,如果用户点击该菜单,我必须突出显示特定菜单。我根据控制器名称检测到它。

我有两个名称不同的菜单,即用户编辑和客户端编辑。 两者实际上共享相同的控制器(即:UserController)和相同的域。

我尝试在UrlMappings中为其创建别名 例如:“/ client / edit /”(控制器:“用户”,动作:“编辑”)

但在主要布局上,它似乎没有被识别为“客户”而是被视为“用户”

有没有很好的方法来解决这个问题,而无需复制控制器? 我可以继承控制器吗?如果是这样的话......

非常感谢你。

1 个答案:

答案 0 :(得分:0)

使用过滤器将控制器名称添加到模型中并对其进行修改以适应:

e.g。把它放在/grails-app/conf/MenuAddingFilter.groovy

class MenuAddingFilter {
   static filter = {
      all(controller:'*', action:'*') {
         after = { model ->
            model.menuName = controllerName.replace("Controller","")
         }
      }  
   }   
}

然后在.gsp页面中,您将有menuName属性可供使用。 有关详细信息,请参阅http://www.grails.org/Filters