Play!1 …mas o menos completo


Introducción a Play! Framework

Play es un framework que nos permite crear aplicaciones web de una manera simple y ágil, y al mismo tiempo evitar la burocracia comúnmente asociada a los frameworks web de Java.

Hace varios meses me propuse comenzar a explorar esta herramienta. Mientras lo hice fui tomando notas y escribiendo cosas que me resultaban de interés. Hoy las comparto con ustedes, esperando que les resulte de utilidad para dar sus primeros pasos con Play.

Algunas cosas que te gustarán de play

-Guardar y Recargar. Con Play no necesitas guardar tus cambios, recompilar, hacer un nuevo package y volver a desplegar tu aplicación. Es tan fácil como hacer ctrl+s y F5. Si no hay errores simplemente refrescamos el contenido; si no muestra la línea donde cree que nos hemos equivocado en el propio explorador (Find errors fast).

-Stateless model. El creador del framework nos muestra que no es necesario guardar estado en la sesión, permitiendo escalar fácilmente.

– Viene con templates basados en Groovy para simplificar el mantenimiento y hacer la lectura más fácil (la implementación de Groovy está cambiando en Play!2)

-Java Puro. Por eso puedes programar utilizando cualquier editor de texto hasta los 3 IDE’S más usados.

– Out of the Box, ready to go. La descarga de Play pesa alrededor de 40MB , y contiene todo lo necesario para empezar a desarrollar, incluido Hibernate, OpenID, MemCached.

Instalación

Aquí no hay nada interesante (¡y eso es bueno!), solamente descomprimir el archivo en un directorio y ejecutar por consola: play

Creando y arrancando una aplicación

Escribimos por consola:

play new nombreDeLaApp

… y play nos pedirá que le asignemos una suerte de título a la aplicación.

Con eso se crea el esqueleto de una aplicación de play completa, más adelante voy a describirlo.

Corremos la aplicación:

play nombreDeLaApp

Abrimos un navegador y vamos a http://localhost:9000

En esto Play generó la estructura básica y mostrará la paǵina de presentación de la aplicación explicando qué está haciendo.

Escribiendo una Vista
Vamos a modificar la aplicación generada y personalizar la vista.

Vamos a la carpeta de la aplicación generada en nombreDeLaApp/app/views/Application y abrimos index.html encontrando el siguiente código:

#{extends ‘main.html’ /}
#{set title:’Home’ /}
#{welcome /}

Borramos la línea #{welcome /}, que es el tag que utilizar play para mostrar el mensaje de bienvenida por defecto.

Ahora vamos a editar esto escribiendo allí mismo <h1>Hola Mundo</h1>

Refrescamos en el navegador y vemos los cambios.

Ahora en el mismo lugar vamos a agregar un formulario con un campo text y un botón submit para preguntar el nombre al usuario. Debería quedar algo así:

#{extends ‘main.html’ /}
#{set title:’Home’ /}
<h1>Hello World!</h1>
What is your name?
<form action=”@{Application.sayHello()}” method=”POST”>
  <input type=”text” name=”myName” />
  <input type=”submit” name=”hello” value=”Say hello!” />
</form>

Si refrescamos nos encontraremos con un error porque el destino Application.sayHello() que busca el método post no existe.

Como estamos en desarrollo nos va a decir que hubo un error pero cuando esto pase a producción va a llamar al estándar HTTP 500 error (que podemos personalizar). Tranquilo que el usuario final no va a ver tu código.

Creando el Controlador

El controlador es esa parte del MVC que contiene la lógica de la aplicación. Típicamente la lógica y las reglas de negocio hacen que tu aplicación responda a las entradas del usuario. Nuestro controlador debería responder al nombre que tiene en el formulario.

Por defecto play crea un controlador Application.java en nombreDeLaAplicación/app/controllers/. Ahora necesitamos un método que sepa responder a Application.sayHello()

Nuestro controlador Application debería quedar así:

package controllers;
import play.mvc.*;

public class Application extends Controller {

  public static void index() {
    render();
  }

  public static void sayHello(String myName) {
    render(myName);
  }
}

Si guardamos el archivo y refrescamos el navegador el error debería haber desaparecido, y debería poder verse la aplicación Hola Mundo esperando que ingresemos algo.

Si hacemos click en el botón tendremos otro error diciendo que Application/sayHello.html no existe. Tenemos que ver el código que hicimos para entender por qué nos da el error.

Cuando clickeamos en el botón para enviar nuestro nombre en el formulario, esto envía los datos en el campo de testo al método sayHello en el Controlador. Play reconoce que el nombre del campo de texto en el formulario fue llamado ‘myName’, asi que automáticamente rellena los datos que ingresamos en la variable myName.

El código render(myName) intenta mostrar la página HTML para renderizar el resultado. Por defecto, el método render muestra un archivo HTML con el mismo nombre que el método desde donde es llamado, así en este caso es sayHello.html. Sin embargo, hasta el momento solo creamos una página  (la index). Entonces solo necesitamos crear el template sayHello.html

Ahora vamos a helloworld/app/views/Application y creamos un archivo llamado sayHello.html y ponemos el siguiente código.

#{extends ‘main.html’ /}
#{set title:’Home’ /}
Hello ${myName}!

Refrescamos el navegador y ya está completo, tenemos nuestra primer aplicación Play Framework. (en 12 líneas de código)

sources en github

@wfranck

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: