Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- managed bean
- o jsf foi concebido de acordo c o modelo MVC
- Na visao ficou os componentes do xhtml, primefaces
- 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ó
- Modelo: serao os dados da tela, ex os dados q vc vai digitar p salvar um fabricante, os dados q sao
- exibidos na tabela, na pesquisa, isso eh um modelo tbm
- Controlador = são ações, ex salvar, buscar, excluir
- No modelo MVC a visao tem que chamar o controlador
- 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
- se vc preciasa do controlador, precisa do managed bean
- Em uma tela eu posso ter varios managed beans, o mais comum é 1 xhtml, 1 managed bean
- Para cd managedBean o JSF cria um objeto em memória, por padrão ele cria o nome da classe em minusculo ex fabricanteBean,
- ou seja quando eu precisar na view chamar algo do controlador, do managed bean, eu nao uso o nome em maiusculo e sim
- o nome do objeto dele q eh escrito em minusculo FabricanteBean fabricanteBean(objeto)
- EX: <p:commandButton value="Salvar" actionListener="#{fabricanteBean.salvar}"/>
- Action = usado qdo vc quer navegar entre telas
- ActionListener = qdo vc esta na tela A, faz alguma coisa e quer ficar na A
- //exemplo <p:commandButton value="Salvar" actionListener="#{fabricanteBean.salvar}"/>
- //<p:commandButton value="Voltar" action="/pages/fabricantePesquisa.xhtml?faces-redirect=true"/>
- Geralmente o actionListener esta sempre atrelado a ajax
- Ex com ajax <p:commandButton value="Salvar" actionListener="#{fabricanteBean.salvar}"
- update=":msgGlobal"/>
- <!-- UPDATE: serve p qdo vc tem uma requisição ajax, vc informar quem tem q ser atualizado -->
- <!-- 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 -->
- o bean eh uma classe java comum q precisa ter duas anotações:
- @ManagedBean do import javax.faces.bean.ManagedBean; Essa anotação diz q ele eh um managed bean
- A outra anotação é qual eh a regra de escopo dele:
- Existem 3 regras de escopo:
- escopo eh uma area de memoria no seu servidor, onde vao ficar armazenadas as sua informações, quanto tempo vai ficar armazenado?
- 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
- 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.
- Visao: mais usado, recomendado no site do primefaces, view scoped. Funciona assim, eu entrei na tela do fabricante,
- ele cria os managed beans do fabricante, eu mudei p tela de produto, ele destroi os managed beans do fabricante e cria
- 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
- @ViewScoped do import javax.faces.bean.ViewScoped;
- Requisicao> eh o mais leve, mas tbm eh o q traz mais dor de cabeça p implementar. Para implementar ele facil, soh
- 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
- =======================================================
- Controle nd mais eh do q eu metodo, onde nesse metodo eu farei uma logica de programação;
- Geralmente o controle eh um metodo public void, exemplo public void salvar () (ISTO EH UMA AÇAO)
- Posso ter outros tipos de retorno, posso ter parametros
- 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:
- O faces util eh uma classe q tera funcões utilitarias p nossa aplicação web
- //O JSF não sabe exibir String, só sabe exibir facesMessage
- Para saber mais sobre FACES MESSAGE E deste assunto vá em FACES CONTEXT - MESSAGE E GROWL
- ===========================================================================================================
- controlador = ações ex salvar
- o managed bean faz o papel do controlador e do modelo
- O modelo sao varios objetos q guardam as inf da tela
- Exemplo: vou na pesquisa, na pesquisa vou digitar o q eu tenho q pesquisar e o resultado da pesquisa
- No cadastro eu vou digitar todos os dados, esses dados digitados ficam armazenados no modelo
- O modelo eh um conjunto de objetos q compoem os dados q alimentam as telas.
- O modelo pode ser composto por variaveis do tipo primitivo, ex inteiro, int, short, Long ou variaveis do
- tipo objeto, ex String, Produto,Carro.
- Para trabalhar c JSF geralmente o modelo sera um objeto (Entidade)
- Ex private Fabricante fabricanteCadastro;
- Essa variavel fabricanteCadastro, sera utilizada para eu incluir, excluir etc
- o modelo eh composto por atributos privados. Gerar getters and setters, escreve get e set e de control espaço
- Agr tenho q marrar o meu modelo com a minha visao: atraves de el expression (p amarrar ele precisa de getters and setters),
- o value do input text serve p ligar a nossa visao (interface) ao nosso managed bean
- modelo: private Fabricante fabricanteCadastro; (aqui dentro tem tds os atributos da entidade)
- <p:outputLabel value="Código" />
- <p:inputText size="10" readonly="true" value="#{fabricanteBean.fabricanteCadastro.codigo}" />
- VÁ DANDO CONTROL ESPAÇO P PREENCHER
- fabricanteBean > nome do managedBean
- fabricanteCadastro > nome do objeto q faz parte do modelo
- codigo > nome do campo
- <p:outputLabel value="Descrição" />
- <p:inputText maxlength="50" size="30" value="#{fabricanteBean.fabricanteCadastro.descricao}"/>
- --------------
- Para testar, para imprimir o conteudo do objeto vc precisa de toString
- instancie o objeto
- private Fabricante fabricanteCadastro = new Fabricante();
- public void salvar() {
- //codigo para testar e ver se a amarração do controle com o modelo deu certo
- //Para testar, para imprimir o conteudo do objeto vc precisa de toString
- FacesUtil.adicionarMsgInfo(fabricanteCadastro.toString());
- }
- FacesUtil.adicionarMsgInfo(fabricanteCadastro.toString()); Alguns metodos chamam o toString automaticamente,
- outros vc precisa forçar adicionando o toString
- e no xhtml:
- <h:panelGrid columns="2">
- <p:outputLabel value="Código" />
- <p:inputText size="10" readonly="true" value="#{fabricanteBean.fabricanteCadastro.codigo}" />
- <p:outputLabel value="Descrição" />
- <p:inputText maxlength="50" size="30" value="#{fabricanteBean.fabricanteCadastro.descricao}"/>
- </h:panelGrid>
- =====================================================================================================
- 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