2. Palestrante
Consultor pela Summa-Tech
Desenvolvedor open source
Ganhador do prêmio Glassfish Awards 2008
Já trabalhou como arquiteto, consultor,
programador em projetos de
telecomunicação, financeiro e bancário,
automação, internet e comércio
eletrônico.
Palestrante em diversos eventos no Brasil e
internacionais desde 2001
8. XHTML e Java
<span wicket:id=”msg”>mensagem</span>
XHTML
new Label(“msg”, “Mensagem da web”);
JAVA
<span>Mensagem da web</span>
Renderizado no cliente
9. Você irá encontrar ...
Puro XHTML
<!DOCTYPE html PUBLIC quot;-//W3C//DTD XHTML 1.0 Transitional//ENquot;
quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtdquot;>
<html xmlns=quot;http://www.w3c.org/1999/xhtmlquot;
xmlns:wicket=quot;http://wicket.apache.orgquot; >
23. Você irá encontrar ...
Validações
● Lado servidor e Ajax
● Perda de foco
24. Você irá encontrar ...
Paginação
● No cliente e no servidor
● Template de paginação
25. E mais
Core (principal módulo)
extensions (extensões Ajax etc)
IoC (spring / guice)
date/time
velocity (templating)
auth-roles (autenticaçao e permissão)
stuff (contribuições da comunidade)
30. Direto ao ponto
<html>
<head>
<title>Wicket</title>
</head>
<body>
<span wicket:id=quot;msgquot;>Mensagem</span>
</body>
</html>
31. Direto ao ponto
public class HomePage extends WebPage {
public HomePage() {
add(new Label(quot;msgquot;, quot;Texto Renderizado!quot;));
}
}
public class WicketApplication extends WebApplication {
public Class<HomePage> getHomePage() {
return HomePage.class;
}
}
32. XHTML e Java
<span wicket:id=”msg”>mensagem</span>
new Label(“msg”, “Texto Renderizado!”);
<span>Texto Renderizado!</span>
Renderizado no cliente
38. Componentes
Encapsulam a manipulação do HTML
Respondem a eventos
onClick, onSubmit
Sabem onde e como se renderizarem
Gerenciamento completo do ciclo de vida
49. Models
HTML
<input type=”text” wicket:id=”txId” />
Java
new TextField(“txId”,
new PropertyModel(usuario, “nome”));
TextField(“txId”, model)
<<Usuario>>
PropertyModel
+nome : String
+cidade : String
50. Models
Model simples
new Label(“id”, “valor qualquer”);
Por propriedade
new Label(“id”, new PropertyModel(usuario, “nome”));
51. Models
Pelo wicked:id dos componentes
form = new Form(“cadastro”);
form.setModel(new CompoundPropertyModel(usuario));
form.add(new RequiredTextField(“nome”));
Mais poder – nested properties
form.add(new TextField(“endereco.rua”));
59. Ajax
Suporte nativo
Troca de mensagem entre navegador/servidor
Pintura parcial de elementos da tela
Inclusão dinâmica de JS/CSS enviado pelo servidor
Console para debug (desenvolvimento)
Suporte genérico a outras bibliotecas JS
Componentes prontos para usar
60. Ajax
Componentes Prontos
Link, Barra de Progresso, Upload,
Dialog Modal
Abas,
Element Polling – Fazer um elemento, se auto
atualizar pelo servidor
Submit (formulários)
Checkbox (onchange)
Paginação de dados em tabela (com ou sem lazy
loading)
61. Ajax
Componentes Prontos
EditableLabel – editar porções de texto (textarea,
checkbox)
AutoComplete TextField
LazyLoad Panel – quando existem painéis com
muitas informações
AjaxButton com indicador
Facilidade em adicionar validações Ajax, em
formulário convencional.
62. Ajax
Com uma linha de código, adicione validação Ajax,
para o formulário inteiro
AjaxFormValidatingBehavior.
addToAllFormComponents(form, quot;onkeyupquot;,
Duration.ONE_SECOND);
63. Ajax
Label counterLabel = new Label(quot;counterquot;);
add(counterLabel);
counterLabel.setOutputMarkupId(true);
add(new AjaxLink(quot;counterLabelLinkquot;) {
public void onClick(AjaxRequestTarget target){
counter++;
target.addComponent(counterLabel);
}
}
65. Ajax
Considerações ao comparar com outros frameworks
Diferença na concepção do framework
Action x Componentes
Wicket: self contained
Inovação x Continuísmo
Tooling – suporte a IDE
Wicket: Java + XHTML
Outros: Vários XMLs, taglibs/freemarker/velocity,
66. Concluindo ... (finalmente)
Fácil construção e customização de
componentes
Desenvolvimento rápido
Baixa curva de aprendizado
Só Java e HTML! :-)
Atualizado freqüentemente
Popular
Forte comunidade