Skip to content
Guillaume Bort edited this page Feb 5, 2013 · 5 revisions

Application global settings

The Global object

Defining a Global object in your project allows you to handle global settings for your application. This object must be defined in the root package.

import play.*;

public class Global extends GlobalSettings {

}

Intercepting application start-up and shutdown

You can override the onStart and onStop operation to be notified of the corresponding application lifecycle events:

import play.*;

public class Global extends GlobalSettings {

  @Override
  public void onStart(Application app) {
    Logger.info("Application has started");
  }  
  
  @Override
  public void onStop(Application app) {
    Logger.info("Application shutdown...");
  }  
    
}

Providing an application error page

When an exception occurs in your application, the onError operation will be called. The default is to use the internal framework error page. You can override this:

import play.*;
import play.mvc.*;

import static play.mvc.Results.*;

public class Global extends GlobalSettings {

  @Override
  public Result onError(RequestHeader request, Throwable t) {
    return internalServerError(
      views.html.errorPage(t)
    );
  }  
    
}

Handling action not found

If the framework doesn’t find an action method for a request, the onHandlerNotFound operation will be called:

import play.*;
import play.mvc.*;

import static play.mvc.Results.*;

public class Global extends GlobalSettings {

  @Override
  public Result onHandlerNotFound(RequestHeader request) {
    return Results.notFound(
      views.html.pageNotFound(request.uri())
    );
  }  
    
}

The onBadRequest operation will be called if a route was found, but it was not possible to bind the request parameters:

import play.*;
import play.mvc.*;

import static play.mvc.Results.*;

public class Global extends GlobalSettings {

  @Override
  public Result onBadRequest(RequestHeader request, String error) {
    return Results.badRequest("Don't try to hack the URI!");
  }  
    
}

Next: Intercepting requests

Clone this wiki locally