2012-02-11 20 views
2

玩!文檔表明@Before篩選級聯到子級控制器(ref)。爲什麼@Before(only = {「method」})註釋不能級聯到Play中的子類!框架?

比方說,我有:

public class BaseController extends Controller { 
    @Before(only={"show"}) 
    public static void check() { 
     Logger.info("checking..."); 
    } 
} 

public class Users extends BaseController { 
    public static void show(Long id) { 

    } 
} 

當用戶#節目叫,我希望「檢查......」被顯示,但事實並非如此。將@Before篩選器移到Users類中將顯示消息。刪除唯一修飾符也會導致顯示消息。

爲什麼只有修飾符與@Before過濾器一起級聯?

回答

0

我相信「only」適用於聲明它的類,在這種情況下BaseController。標籤解析後,play將在BaseConroller中查找show方法。

+0

這對我來說也是這樣。我嘗試向BaseController添加一個「show」方法作爲遠景,但@Before過濾器仍然被忽略。所以我仍然堅持。 – 2012-02-11 20:32:12

0

相反,您可以製作自己的註釋並將其放在課堂上。

@With(NewAnnonation.class) 
public class YourClass() extends Controller { methods} 

然後你就可以在你想使用類新的註解。

public class NewAnnotation() extends Controller { 
@Before(only = { "YourClass.method1", "YourClass.method2", "SomeOtherClass.method"}) 
public static void doSomeThingBeforeMethods() {insert code :)} 
相關問題