Wicket 2008

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    Wicket 2008 - Presentation Transcript

    1. Apache Wicket Produtividade na Web
    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
    3. Agenda Motivação para mudar O que é o Apache Wicket? Conceitos e componentes Ajax Um pouco de diversão
    4. Problemas XML demais Poluição de taglibs Javascripts não compatíveis Não componentizado Complexo Limitações
    5. O simples existe
    6. Wicket http://wicket.apache.org
    7. Wicket Framework Web Orientado a Componentes Open Source Puro Java e XHTML Simples
    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 \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"> <html xmlns=\"http://www.w3c.org/1999/xhtml\" xmlns:wicket=\"http://wicket.apache.org\" >
    10. Você irá encontrar ... Programação com POJOs
    11. Você irá encontrar ... Reusabilidade ● Componentes ● Gerenciamento do ciclo de vida ● Fragmentos
    12. Você irá encontrar ... Escalabilidade ● Suporte a replicação de sessão ● Baixo estado da sessão
    13. Você irá encontrar ... Testabilidade @Test public void navigateToSecondPage() { WicketTester tester = new WicketTester(); tester.startPage(new FirstPage()); tester.clickLink(\"link\"); tester.assertRenderedPage(SecondPage.class); }
    14. Você irá encontrar ... Extensibilidade ● API do framework ● Comportamento ● Apresentação
    15. Você irá encontrar ... Configuração em Java ● Suporte em qualquer IDE ● Simplicidade ● Completamento de código
    16. Você irá encontrar ... Debug facilitado ● Ajax Debug Window ● Apenas código Java (sem jsp, velocity,etc.)
    17. Você irá encontrar ... Internacionalização
    18. Você irá encontrar ... Herança de páginas HTML
    19. Você irá encontrar ... Controle do botão de voltar ● Estado da sessão ● Formulários POST
    20. Você irá encontrar ... Persistência de estado ● Transparente ● Suporte a POJO ●
    21. Você irá encontrar ... Cache
    22. Você irá encontrar ... Componentes prontos ● Ajax, Paginação, Templates, Abas ● Validação, Árvores, Tabelas, Calendário ● Bookmarks, Bordas, Fragmentos
    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)
    26. Maven $ mvn archetype:generate ... 37: internal -> wicket-archetype-quickstart (A simple Apache Wicket project) ... Choose a number: 37
    27. Conceitos Aplicação Sessão RequestCycle Componentes Models Behaviors
    28. Aplicação Configuração Ponto de entrada (home page) Binding
    29. Aplicação Definida no web.xml <filter> <filter-name>wicket.demo</filter-name> <filter-class> org.apache.wicket.protocol.http.WicketFilter </filter-class> <init-param> <param-name>applicationClassName</param-name> <param-value> teste.WicketApplication </param-value> </init-param> </filter> <filter-mapping> <filter-name>wicket.demo</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
    30. Direto ao ponto <html> <head> <title>Wicket</title> </head> <body> <span wicket:id=\"msg\">Mensagem</span> </body> </html>
    31. Direto ao ponto public class HomePage extends WebPage { public HomePage() { add(new Label(\"msg\", \"Texto Renderizado!\")); } } 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
    33. Sessão Abstrai a HttpSession Armazena informações específicas
    34. Sessão public class LojaSession extends WebSession { private Sacola sacola; public Sacola getSacola() {...} public void setSacola(Sacola s) {...} } Sacola sacola = sessao.getSacola(); sacola.add(produto, quantidade);
    35. RequestCycle Encapsula uma requisição Libera os recursos no final Útil para aplicar o pattern OpenSessionInViewFilter Tipos Stateless Statefull
    36. RequestCycle 1. Cria o objeto de requisição 2. Decodifica a requisição 3. Identifica o alvo (componente, página ...) 4. Processa o evento (onClick, onSubmit ...) 5. Responde (página, componente, arquivo ...) 6. Limpa tudo
    37. Componentes
    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
    39. Componentes Componentes de composição Painéis Bordas Fragmentos Herança Especialize componentes Reutilize
    40. Componentes Super classe: org.apache.wicket.Component Label ListView TextField PageableListView RequiredTextField Loop MultiLineLabel PagingNavigator PasswordTextField ImageMap Image Button Link Form Tree Ajax... BookmarkablePageLink DatePicker
    41. Componentes Tudo é componente wicket:id Tags associadas Podem ser aninhados Respeitando a hierarquia Tags comuns <a href>, <input type>, <form>, <div>, <span>, etc
    42. Componentes Arquivos HTML Juntos à classe correspondente teste.wicket.Pagina src/teste/wicket/Pagina.html src/teste/wicket/Pagina.java
    43. Behaviours
    44. Behaviours Plugins para componentes Modificam o HTML
    45. Behaviours Modifica atributos da marcação dos componentes onClick, onBlur, alt, Plugins para componentes on Modificam o HTML
    46. Behaviours Modifica atributos do HTML dos componentes alt, style, class, font ... Adiciona eventos javascript onClick, onBlur, onKeyPressed ... Adiciona tratamento Ajax cpnt.setOutputMarkupId(true); cpnt.add( new AjaxSelfUpdateBehaviour(Duration.seconds(5)));
    47. Models
    48. Models Binding entre dados e componentes
    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”));
    52. Um componente novo
    53. Confirmação public abstract class ConfirmLink extends Link { public ConfirmLink(String id, String message) { super(id); add(new AbstractBehaviour() { public void onComponentTag( Component c, ComponentTag tag) { tag.put(“onClick”, \"return confirm('\"+message+\"');\"); } }); } }
    54. Confirmação public abstract class DeleteLink extends ConfirmLink { public DeleteLink(String id) { super(id, \"Excluir registro?\"); } } HTML <a href=”#” wicket:id=”del”>Apagar</a> Java add(new DeleteLink(“del”) { public void onClick() { E dataObj = (E) modelObject.getObject(); getService().delete(dataObj); } });
    55. Confirmação <a href=”/demo/?wicket_url” onClick=”return confirm('Excluir registro?');”> Apagar </a>
    56. AJAX Como funciona no Wicket?
    57. Ajax Programador Java, gosta de debugar/programar em JavaScript ?
    58. Ajax Use java para programar JavaScript !
    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, \"onkeyup\", Duration.ONE_SECOND);
    63. Ajax Label counterLabel = new Label(\"counter\"); add(counterLabel); counterLabel.setOutputMarkupId(true); add(new AjaxLink(\"counterLabelLink\") { public void onClick(AjaxRequestTarget target){ counter++; target.addComponent(counterLabel); } }
    64. Ajax DEMO
    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
    67. Muito Obrigado ! claudio@claudius.com.br http://www.claudius.com.br http://wicket.apache.org

    + Claudio MirandaClaudio Miranda, 7 months ago

    custom

    773 views, 0 favs, 1 embeds more stats

    Apresentacao sobre wicket, para o evento de Worksho more

    More Info

    © All Rights Reserved

    Go to text version
    • Total Views 773
      • 770 on SlideShare
      • 3 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 9
    Most viewed embeds
    • 3 views on http://w-download.blogspot.com

    more

    All embeds
    • 3 views on http://w-download.blogspot.com

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as innappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel

    Categories

    Tags