2. Quem sou
Allyson Barros - @allysonbarros
Graduando em Análise e Desenvolvimento de Sistemas - IFRN
Desenvolvedor Web desde 2006
Idealizador do Grupo WebLovers - http://grupoweblovers.co.cc
allysonbarrosrn@gmail.com - allyson_barros_irm@hotmail.com
7. Requisitos
• JDK 5 ou superior
• Editor de Texto (notepad++, Textmate,Vim)
• IDE Java - Eclipse ou Netbeans (Opcional)
8. Ambientes Unix
• Baixar o Framework
• Extrair para uma pasta desejada (Ex: /opt/)
• Adicionar o caminho no $PATH;
9. Ambientes Unix
• Dica: Editar o arquivo .bashrc e adicionar a
linha a seguir:
export PATH=$PATH:/opt/play-1.1/
10. Ambientes Windows
• Baixar o Framework
• Extrair para uma pasta desejada (Ex: C:)
(Recomendado extrair para C: ou diretórios sem espaços para evitar
problemas futuros.)
• Adicionar o caminho no $PATH;
20. Criando os Modelos
package models;
import play.*;
import play.db.jpa.*;
import javax.persistence.*;
import java.util.*;
@Entity
public class foo extends Model {
// Seu Código aqui
}
21. Selecionando itens
do Modelo
List<User> user = User.all();
List<User> user =
User.find("admin = ?", "true").fetch();
User user = User.findById(1);
22. Salvando e Atualizando
itens do Banco de Dados
User user = new User("foo", "bar", "a@a.com");
user.save();
User user = User.findById(1);
user.email = "flisol@rn.softwarelivre.org";
user.save();
23. Deletando itens do Banco
de Dados
User user = User.findById(1);
user.delete();
24. Criando os Controllers
package controllers;
import play.*;
import play.mvc.*;
import java.util.*;
import models.*;
public class Application extends Controller {
public static void index() {
render();
}
}
25. Interceptações -
Controllers Annotations
• @Before - Antes da ação ser chamada
• @After - Depois da ação ser chamada
• @Finally - Depois da ação ser executada
completamente
26. Controllers Annotations
@Before - Antes da ação ser chamada
@Before(unless={“login”,“notauthorised”})
static void checkAdmin() {
String usr = session.get(“user”);
if (usr == null) {
login();
} else {
User user = User.find(“byUsername”,
usr).first(); if (!user.isAdmin) {
notauthorised();
}
}
}
27. Controllers Annotations
@After - Depois da ação ser chamada
public class Admin extends Application {
@After
static void log() {
Logger.info("Action executed ...");
}
public static void index() {
List<User> users = User.findAll();
render(users);
}
}
28. Controllers Annotations
@Finally - Depois da ação ser executada completamente
public class Admin extends Application {
@Finally
static void log() {
Logger.info("Response contains : " +
response.out);
}
public static void index() {
List<User> users = User.findAll();
render(users);
}
}
33. Engine de Templates (Groovy)
Mensagens - &{...}
<h1>Hello ${myName ?: 'guest'}!</h1>
Comentários - *{...}*
*{ Loop through the list of users and output each
user wrapped in a <li> tag }*
Scripts - %{...}%
%{ fullname = user.firstname + “ “ + user.lastname; }%
<h1>Welcome ${fullname}!</h1>
34. Validações de campos
public static void register(String user, String email,
String password) {
validation.required(user);
validation.email(email);
validation.minSize(password, 6);
validation.maxSize(password, 10);
if (user == null || user.length() == 0) {
validation.addError(“user”, "You must enter a
username");
}
render();
}
Exemplo de validação básica
35. Validações de campos
public static void register(String user, String
email, String password) {
validation.required(user).message("You must enter a
username.");
validation.email(email).message("You must enter a
valid email address.");
validation.minSize(password, 6).message("Passwords
must be at least 6 characters long.");
validation.maxSize(password, 10).message("Passwords
must be no more than 10 characters long.");
render();
}
Exemplo de validação básica com mensagens personalizadas.
36. Validações de campos
public static void register(String user, String email, String
password) {
// Código do Slide Anterior
if(validation.hasErrors()) {
params.flash();
validation.keep();
registrationForm();
}
render();
}
Exemplo de redirecionamento caso exista erros de validação.
37. Validações de campos
#{ifErrors}
<h1>Errors Encountered</h1>
<p>There were validation errors encountered while processing
your registration
request.</p>
<ul>
#{errors}
<li>${error}</li>
#{/errors}
</ul>
<p>Please go back and check the details and try again</p>
#{/ifErrors}
#{else}
The registration process was successful!
#{/else}
Exemplo de visualização dos erros na view.
40. Carregando o módulo PDF
para a aplicação
module.pdf=${play.path}/modules/pdf-head
Adicionar esta linha ao final do arquivo
config/application.conf
41. Exemplo de uso do
módulo PDF
package controllers;
import play.mvc.*;
import static play.modules.pdf.PDF.*;
public Application extends Controller {
public static void index() {
renderPDF();
}
}