PlayFramework 1.4 在条件不满足后防止传播
Posted
技术标签:
【中文标题】PlayFramework 1.4 在条件不满足后防止传播【英文标题】:PlayFramework 1.4 prevent propagation after condition not fulfilled 【发布时间】:2016-09-13 09:37:54 【问题描述】:我有一个问题:我想使用@Before
来拦截请求并检查是否满足某个条件;如果不是,请阻止传播并向用户返回消息。
除了抛出异常还有其他方法吗?
代码示例:
在路线中:
GET /someRoute MainController/someMethod
GET /otherRoute MainController/otherMethod
在控制器中
public class MainController
@Before
public static void check()
// checking, if not fulfilled - render error and requested method is not invoked.
public static void someMethod() /*some action*/
public static void otherMethod() /*...other action*/
【问题讨论】:
请添加一些代码。到目前为止,您尝试了什么? 只想放在 Controller@Before
Adnotation 中以拦截调用此控制器方法的所有请求 - 然后我想检查用户是否有权查看结果(我从配置中获得一个参数,它是不重要) - 如果是这样,则调用被调用的方法(它们本身,就像没有@Before
),否则我会向页面呈现错误消息。
【参考方案1】:
由于@Before注解的方法在Controller上,所以可以使用所有的静态函数直接回答。 例如,如果您想返回纯文本:
public class MainController
@Before
public static void check()
// checking, if not fulfilled - render error and requested method is not invoked.
renderText("Error");
public static void someMethod() /*some action*/
public static void otherMethod() /*...other action*/
这将停止传播并向请求发送响应。
例如,您也可以使用 error() 或 disabled()。
【讨论】:
非常感谢,我不确定渲染是否会破坏传播,但你向我保证了 :)以上是关于PlayFramework 1.4 在条件不满足后防止传播的主要内容,如果未能解决你的问题,请参考以下文章