JavaActions

opensas edited this page Apr 25, 2012 · 4 revisions
Clone this wiki locally

Actions, Controllers y Results

¿Qué es un Action?

La mayoría de los request recibidos por una aplicación Play son atendidos por un Action.

Un action básicamente es un método Java que procesa las solicitudes HTTP, y produce un resultado para enviar al cliente.

public static Result index() {
  return ok("Got request " + request() + "!");
}

Un Action devuelve un valor play.mvc.Result, representando la respuesta HTTP para enviar al cliente web. En este ejemplo ok genera una respuesta 200 OK con un body con respuesta de tipo text/plain.

Controladores

Un controller no es más que una clase que que extiende de play.mvc.Controller que agrupa varios métodos action.

La sintaxis más simple para definir un action es un método estático sin parámetros que devuelve un valor Result:

public static Result index() {
  return ok("It works!");
}

Un método action puede tener parámetros:

public static Result index(String name) {
  return ok("Hello" + name);
}

Esos parámetros serán resueltos por el Router y se llenarán con valores de la solicitud de la URL. Los valores de los parámetros pueden ser extraídos a partir de la dirección URL o por el string de la consulta en la URL.

Results

Empecemos con un resultado simple: un resultado HTTP con código de estado, un conjunto de encabezados HTTP y el body para enviar al cliente web.

Esos resultados están definidos por la clase play.mvc.Results que provee varios métodos para ayudar a devolver HTTP estándar, como el método ok que usamos en la sección anterior:

public static Result index() {
  return ok("Hello world!");
}

Aquí tenemos varios ejemplos que devuelven distintos resultados:

Result ok = ok("Hello world!");
Result notFound = notFound();
Result pageNotFound = notFound("<h1>Page not found</h1>").as("text/html");
Result badRequest = badRequest(views.html.form.render(formWithErrors));
Result oops = internalServerError("Oops");
Result anyStatus = status(488, "Strange response type");

A todos ellos los podemos encontrar en la clase play.mvc.Results.

Los Redirects también son simples resultados

Redireccionar el browser a otra URL es solo otro tipo de resultado simple. Sin embargo, esos tipos de resultados no tienen un cuerpo de respuesta.

Hay varias funciones que nos ayudan a crear results de tipo redirect:

public static Result index() {
  return redirect("/user/home");
}

Por defecto estos results retornarán una respuesta de tipo 303 SEE_OTHER, pero también puedes especificar un código más específico:

public static Result index() {
  return temporaryRedirect("/user/home");
}

Siguiente: HTTP Routing