2011-05-07 35 views
4

我想知道,如果这样的事情是possbile:是否有可能创建一个在grails中扩展抽象控制器的控制器?

abstract class AbstractController { 
    def list = { 
    //default list action 
    } 
} 

class MyController extends AbstractController { 
    def show = { 
    //show action 
    } 
} 

哪里AbstractController是不可见的在网络上即/应用/抽象/目录是无法访问的,并在那里MyController有行动listshow,并在访问web as/app/my/....

任何人都做过类似的事情吗?

回答

0

对于最近版本的grails(3.x作为写作时间),最好是traits而不是扩展抽象Controller或使用Mixin,后者自从引入traits在groovy v2.3中,这是一个使用特征向控制器添加一般行为的示例: 1-在src/groovy中创建特征,例如

import grails.web.Action 

trait GenericController { 

    @Action 
    def test(){ 
    render "${params}" 
    } 
} 

2 - 实现你的特点,你实现任何接口:

class PersonController implements GenericController { 
    /*def test(){ 
     render 'override the default action...' 
    }*/ 
} 

注:性状可以动态地访问所有控制器对象:参数,可以响应......等等,你仍然可以覆盖特质的行为。

希望得到这个帮助。