Azbesciak Azbesciak - 2 months ago 22
HTTP Question

PlayFramework 1.4 prevent propagation after condition not fullfiled

I have a following problem: I want o use

@Before
to intercept requests and check if a certain condition is fullfiled; if not, prevent propagation and return a message to user.

Is there any other way than throwing an exception?

Code example:

in routes:

GET /someRoute MainController/someMethod
GET /otherRoute MainController/otherMethod


in Controller

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

Answer

Since the method annotated with @Before is on a Controller, you can use all the static function to directly answer. For example if you want to return a plain text :

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

That will stop the propagation and sand a response to the request.

You can also use error() or forbidden() for example.

Comments