2016-09-13 6 views
0

У меня есть следующая проблема: я хочу o использовать @Before для перехвата запросов и проверки того, является ли определенное условие полным; если нет, предотвратить распространение и вернуть сообщение пользователю.PlayFramework 1.4 предотвращает распространение после того, как состояние не заполнено

Есть ли другой способ, кроме исключения? Пример

Код:

в маршрутах:

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*/} 
+0

Пожалуйста, добавьте часть своего кода. Что вы пробовали до сих пор? – abarisone

+0

Просто хочу разместить в контроллере '@ Before' Adnotation, чтобы перехватить все запросы, вызывающие методы этого контроллера, - тогда я хочу проверить, имеет ли пользователь разрешение на просмотр результата (я получаю параметр из config, это не важно) - если это так , вызываемый метод вызывается (сам, как и без '@ Before'), в противном случае я выношу сообщение об ошибке на страницу. – Azbesciak

+0

Добавлен пример :) – Azbesciak

ответ

0

Поскольку метод с аннотацией @Before находится на контроллере, вы можете использовать все статическую функцию прямо ответ. Например, если вы хотите вернуть простой текст:

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*/} 

Это остановит распространение и передачу ответа на запрос.

Вы также можете использовать ошибку() или запретить(), например.

+0

Thx много, я не был уверен, что рендеринг разрывает распространение, но вы обеспечили мне :) – Azbesciak