Guest User

Untitled

a guest
May 24th, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.84 KB | None | 0 0
  1. managed bean
  2. o jsf foi concebido de acordo c o modelo MVC
  3. Na visao ficou os componentes do xhtml, primefaces
  4. MANAGED BEAN: CLASSE java q faz o papel do modelo e do controle. o JSF preferiu unir o modelo e o controlador em uma classe só
  5. Modelo: serao os dados da tela, ex os dados q vc vai digitar p salvar um fabricante, os dados q sao
  6. exibidos na tabela, na pesquisa, isso eh um modelo tbm
  7.  
  8. Controlador = são ações, ex salvar, buscar, excluir
  9.  
  10. No modelo MVC a visao tem que chamar o controlador
  11.  
  12. P eu exibir uma msgem, em resumo, preciso de uma ação na sua tela, para ter uma ação na tela, vc precisa do controlador
  13. se vc preciasa do controlador, precisa do managed bean
  14.  
  15. Em uma tela eu posso ter varios managed beans, o mais comum é 1 xhtml, 1 managed bean
  16.  
  17. Para cd managedBean o JSF cria um objeto em memória, por padrão ele cria o nome da classe em minusculo ex fabricanteBean,
  18. ou seja quando eu precisar na view chamar algo do controlador, do managed bean, eu nao uso o nome em maiusculo e sim
  19. o nome do objeto dele q eh escrito em minusculo FabricanteBean fabricanteBean(objeto)
  20. EX: <p:commandButton value="Salvar" actionListener="#{fabricanteBean.salvar}"/>
  21.  
  22. Action = usado qdo vc quer navegar entre telas
  23. ActionListener = qdo vc esta na tela A, faz alguma coisa e quer ficar na A
  24.  
  25. //exemplo <p:commandButton value="Salvar" actionListener="#{fabricanteBean.salvar}"/>
  26. //<p:commandButton value="Voltar" action="/pages/fabricantePesquisa.xhtml?faces-redirect=true"/>
  27. Geralmente o actionListener esta sempre atrelado a ajax
  28.  
  29. Ex com ajax <p:commandButton value="Salvar" actionListener="#{fabricanteBean.salvar}"
  30. update=":msgGlobal"/>
  31. <!-- UPDATE: serve p qdo vc tem uma requisição ajax, vc informar quem tem q ser atualizado -->
  32. <!-- No update eu coloco :msgGlobal (id de quem eu quero atualziar quem no caso eh o id do growl q esta na pagina (template) modeloGeral.xhtml -->
  33.  
  34.  
  35. o bean eh uma classe java comum q precisa ter duas anotações:
  36. @ManagedBean do import javax.faces.bean.ManagedBean; Essa anotação diz q ele eh um managed bean
  37.  
  38. A outra anotação é qual eh a regra de escopo dele:
  39. Existem 3 regras de escopo:
  40. escopo eh uma area de memoria no seu servidor, onde vao ficar armazenadas as sua informações, quanto tempo vai ficar armazenado?
  41.  
  42. Sessao: eh a mais fácil p usar, mas eh q traz mais peso // O sessao funciona assim, vc abriu a aplicação ele cria essa area
  43. de memoria, ele soh vai destruir essa area quando vc fechar a aplicação. Ou seja, com o tempo essa area de memoria vai aumentando mto pq pode ter telas, managed beans q vc nao esta usando, mas ele esta na sessão, entao costuma pesar mto.
  44.  
  45. Visao: mais usado, recomendado no site do primefaces, view scoped. Funciona assim, eu entrei na tela do fabricante,
  46. ele cria os managed beans do fabricante, eu mudei p tela de produto, ele destroi os managed beans do fabricante e cria
  47. os do produto e assim sucessivamente. Entao o managed bean no view scoped existe enquanto eu tiver trabalhando na tela, trocou de tela, ele destroi os managed beans
  48. @ViewScoped do import javax.faces.bean.ViewScoped;
  49.  
  50.  
  51. Requisicao> eh o mais leve, mas tbm eh o q traz mais dor de cabeça p implementar. Para implementar ele facil, soh
  52. se vc nao usar primefaces. Se vc precisar usar ajax, ele nao eh recomendado. Vc usa mto o request qdo vc usa o JSF puro (sem o primefaces). A requisicao eh assim, eu cliquei, ele cria o bean q precisa, e ja destroi, faz o q precisa e ja destroi
  53.  
  54.  
  55. =======================================================
  56.  
  57. Controle nd mais eh do q eu metodo, onde nesse metodo eu farei uma logica de programação;
  58. Geralmente o controle eh um metodo public void, exemplo public void salvar () (ISTO EH UMA AÇAO)
  59. Posso ter outros tipos de retorno, posso ter parametros
  60.  
  61.  
  62. mensagens na tela serao utilizadas varias vezes, entao eu nao recomendo q se crie a logica no botao e sim faça uma função:
  63. O faces util eh uma classe q tera funcões utilitarias p nossa aplicação web
  64. //O JSF não sabe exibir String, só sabe exibir facesMessage
  65.  
  66. Para saber mais sobre FACES MESSAGE E deste assunto vá em FACES CONTEXT - MESSAGE E GROWL
  67. ===========================================================================================================
  68. controlador = ações ex salvar
  69. o managed bean faz o papel do controlador e do modelo
  70. O modelo sao varios objetos q guardam as inf da tela
  71. Exemplo: vou na pesquisa, na pesquisa vou digitar o q eu tenho q pesquisar e o resultado da pesquisa
  72. No cadastro eu vou digitar todos os dados, esses dados digitados ficam armazenados no modelo
  73. O modelo eh um conjunto de objetos q compoem os dados q alimentam as telas.
  74.  
  75. O modelo pode ser composto por variaveis do tipo primitivo, ex inteiro, int, short, Long ou variaveis do
  76. tipo objeto, ex String, Produto,Carro.
  77. Para trabalhar c JSF geralmente o modelo sera um objeto (Entidade)
  78. Ex private Fabricante fabricanteCadastro;
  79. Essa variavel fabricanteCadastro, sera utilizada para eu incluir, excluir etc
  80. o modelo eh composto por atributos privados. Gerar getters and setters, escreve get e set e de control espaço
  81.  
  82. Agr tenho q marrar o meu modelo com a minha visao: atraves de el expression (p amarrar ele precisa de getters and setters),
  83. o value do input text serve p ligar a nossa visao (interface) ao nosso managed bean
  84.  
  85.  
  86. modelo: private Fabricante fabricanteCadastro; (aqui dentro tem tds os atributos da entidade)
  87.  
  88.  
  89. <p:outputLabel value="Código" />
  90. <p:inputText size="10" readonly="true" value="#{fabricanteBean.fabricanteCadastro.codigo}" />
  91.  
  92.  
  93. VÁ DANDO CONTROL ESPAÇO P PREENCHER
  94. fabricanteBean > nome do managedBean
  95. fabricanteCadastro > nome do objeto q faz parte do modelo
  96. codigo > nome do campo
  97.  
  98.  
  99. <p:outputLabel value="Descrição" />
  100. <p:inputText maxlength="50" size="30" value="#{fabricanteBean.fabricanteCadastro.descricao}"/>
  101.  
  102. --------------
  103. Para testar, para imprimir o conteudo do objeto vc precisa de toString
  104.  
  105. instancie o objeto
  106.  
  107. private Fabricante fabricanteCadastro = new Fabricante();
  108.  
  109.  
  110. public void salvar() {
  111.  
  112.  
  113. //codigo para testar e ver se a amarração do controle com o modelo deu certo
  114. //Para testar, para imprimir o conteudo do objeto vc precisa de toString
  115. FacesUtil.adicionarMsgInfo(fabricanteCadastro.toString());
  116. }
  117.  
  118.  
  119. FacesUtil.adicionarMsgInfo(fabricanteCadastro.toString()); Alguns metodos chamam o toString automaticamente,
  120. outros vc precisa forçar adicionando o toString
  121.  
  122.  
  123.  
  124. e no xhtml:
  125.  
  126. <h:panelGrid columns="2">
  127. <p:outputLabel value="Código" />
  128. <p:inputText size="10" readonly="true" value="#{fabricanteBean.fabricanteCadastro.codigo}" />
  129.  
  130.  
  131.  
  132. <p:outputLabel value="Descrição" />
  133. <p:inputText maxlength="50" size="30" value="#{fabricanteBean.fabricanteCadastro.descricao}"/>
  134.  
  135. </h:panelGrid>
  136.  
  137. =====================================================================================================
  138.  
  139. Para saber mais sobre FACES MESSAGE E deste assunto (ligacao Bean com XHTML) vá em "FACES CONTEXT - MESSAGE E GROWL"
Add Comment
Please, Sign In to add comment