2014-02-13 31 views
2

是否可以从另一个控制器的Action中调用Play控制器?我在java中实现一个控制器像这样:玩2.2 Java - 一个控制器可以调用另一个?

public class SubdomainHandler extends Controller { 
    public static Result redirect(String path, String file) { 
     String newPath = ... // do tricky things with Http.Context.current().request().host() . 
     Action wrappedControllerAction = Assets.at(newPath, file); 

     return wrappedControllerAction.render(); // <- Nope, no such API. 
    } 
} 

是否有可能得到一个操作返回结果?我假设可以在这里做一个同步调用,但是返回一个Promise似乎是正确的做法。

干杯, J-

回答

0

Scala中,解决的办法很简单:

object SubdomainHandler extends Controller { 

    def redirect(path: String, file: String) = controllers.Assets.at(messWithPath(path), messWithFile(file)) 

} 

照顾我Play中的用例。

人照顾采取刺在相当于Java,备案?

1

有一个在play2没有魔法,因为在play1,控制器方法只是方法,这样你就可以在控制器之间打电话给他们,你只需要在最后正确呈现。

我不知道你想做的事,但如果你想有多个动作之间的共同行为,ActionBuilder或过滤器可能是你的使用情况

+0

>控制器方法只是方法,这样你就可以在控制器之间打电话给他们,你只需要在最后正确呈现。 就是这样,我在最后渲染时遇到了问题。在java中,如何将一个Action 渲染到Result中?我的scala-fu很虚弱,因为它看起来就是那种最自然的做法。在斯卡拉,它将如何完成? –

相关问题