Skip to content

Latest commit

 

History

History
95 lines (65 loc) · 2.64 KB

File metadata and controls

95 lines (65 loc) · 2.64 KB

Router Annotations

Written by Nicolas Leroux.
Improved by Leon Radley (digiPlant AB)

Supported annotations

The router module allows you to embed your routes inside the controller. It provides a set of annotations to declare your routes next to your controller methods.

The following annotations are supported at method level:

  • @Post
  • @Put
  • @Get
  • @Delete
  • @Head
  • @WS
  • @Any

These annotations have the following attributes:

  • value: the path to access your controller’s method
  • priority (optional): the priority of the route (lower number is higher priority)
  • accept (optional)
  • format (optional)

@Any matches all the above HTTP methods.

The following annotations provide grouping:

  • @Posts
  • @Gets

Note that the path uses the same format described in HTTP routing

Examples:

@Get("/emails/{<.*>folderNames}/{messageId}")
public static void email(@Bind(separator = "/")String[] folderNames, int messageId) throws Exception {
   ...
}
 @Post("/login")
public static void authenticate(String username, String password) throws Exception {
   ...
}
@Posts({
        @Post("/admin/myPosts/{id}"),
        @Post("/admin/new")})
public static void postForm(Long id) throws Exception {
   ...
}

The following annotations are supported at class level:

  • @ServeStatic
  • @StaticRoutes

@ServeStatic indicates content that need to be served statically. It has the following attributes:

  • value: The path to access the content
  • directory: the directory you want to access inside the Play! application
  • priority (optional): the priority of the route (lower number is higher priority)

@StaticRoutes allows to define multiple @ServeStatic routes.

Examples:

@ServeStatic(value = "/public/", directory = "public")
public class Application extends Controller {
   ...
}
@StaticRoutes({
    @ServeStatic(value = "/public/", directory = "public"),
    @ServeStatic(value = "/images/", directory = "images")
})
public class Application extends Controller {
   ...
}

Be sure to empty the “routes” file to avoid any conflicting routes.

Enable the router module for the application

In the /conf/dependencies.yml file, enable the router module by adding this line:

# The router module
- play -> router head

Issue tracking

If you wish to report a bug or wish for a new feature, please use the issue tracker