Qual é o componente utilizado para mostrar a bean na tela?[Resolvido]
24 respostas
A
Andr_de_Souza_Vieira
Boa Noite Caros!
Estou iniciando com desenvolvimento java para web e estou com o seguinte problema: tenho uma aplicação web rodando com servidor TomCat 7.0,
entretanto ela não reconhece a bean(entidade com um construtor) e mostra a hash tag sem nenhum funcionalidade, olhe o código abaixo:
importjavax.faces.bean.ManagedBean;@ManagedBean// Notation JSFpublicclassExibeNumero{// Classe exibir numeroprivateintnumero;publicExibeNumero(){numero=10;}publicintgetNumero(){returnnumero;}publicvoidsetNumero(intnumero){this.numero=numero;}}
// HTML
<?xml version="1.0" encoding="ISO-8859-1" ?><jsp:rootxmlns:jsp="http://java.sun.com/JSP/Page"xmlns:f="http://java.sun.com/jsf/core"xmlns:h="http://java.sun.com/jsf/html"version="2.0"><jsp:directive.pagelanguage="java"contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"/><jsp:text><![CDATA[ <?xml version="1.0" encoding="ISO-8859-1" ?> ]]></jsp:text><jsp:text><![CDATA[ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> ]]></jsp:text><htmlxmlns="http://www.w3.org/1999/xhtml"><head><metahttp-equiv="Content-Type"content="text/html; charset=ISO-8859-1"/><title>Insert title here</title></head><body><f:view>
// Abaixo a hash tag: o valor seria 10, mas aparece a mensagem como podemos visualizar abaixo
Valor: #{exibeNumero.numero}
</f:view></body></html></jsp:root>
eu utilizo o <h:outputLabel value="#{usuarioLogadoController.usuariologado.nome_pessoa}"/>
Ruttmann
Eu também utilizo o outputLabel e acho que é o mais indicado no seu caso…
drsmachado
Eu nunca utilizei o f:view e, sempre que coloquei como #{bean.valor} ele mostra sem problemas.
O que pode estar ocorrendo é uma falha nas configurações do teu projeto, em específico, faces-config.xml e web.xml podem não estar adequados ou você pode estar chamando a página pela extensão errada (pagina.xhtml, por exemplo).
Aliás, pela estrutura das tags, parece que você não está usando o xhtml e, sim, jsp, certo?
A
Andr_de_Souza_Vieira
drsmachado:
Eu nunca utilizei o f:view e, sempre que coloquei como #{bean.valor} ele mostra sem problemas.
O que pode estar ocorrendo é uma falha nas configurações do teu projeto, em específico, faces-config.xml e web.xml podem não estar adequados ou você pode estar chamando a página pela extensão errada (pagina.xhtml, por exemplo).
Aliás, pela estrutura das tags, parece que você não está usando o xhtml e, sim, jsp, certo?
Mas, é obrigatório colocar o /faces/.
Se você tem dúvidas, abra o wizard, altere para suporte a JSF 2 (ou 2.1) e siga até o fim, na última tela, você precisa selecionar entre Disable library ou User library e pelo pattern da URL que estará como
/faces/*
Se não me engano
A
Andr_de_Souza_Vieira
drsmachado:
Se você não mudou, o padrão do Eclipse irá exigir que sua página seja chamada pelo padrão:
Mas, é obrigatório colocar o /faces/.
Se você tem dúvidas, abra o wizard, altere para suporte a JSF 2 (ou 2.1) e siga até o fim, na última tela, você precisa selecionar entre Disable library ou User library e pelo pattern da URL que estará como
/faces/*
Se não me engano
Então eu já removi esse faces no properties>Project Facets> JavaServer Faces, por isso que ele me deixou renomear o arquivo teste.jsp para teste.xhtml.
Pior ainda, que eu tenho um projeto que fiz no pc da faculdade que está funcionando certinho, e está tudo igual ao meu. Agora não sei se é o eclipse ou outra coisa…
drsmachado
Peraí.
Arquivos jsp possuem uma estrutura totalmente diferente dos xhtml.
O que eu sugiro é que você crie seu arquivo XHTML como sendo um arquivo html e, no wizard, selecione o next, para selecionar uma das várias opções de facelets disponíveis e não fazer uma gambiarra com o jsp.
A
Andr_de_Souza_Vieira
drsmachado:
Peraí.
Arquivos jsp possuem uma estrutura totalmente diferente dos xhtml.
O que eu sugiro é que você crie seu arquivo XHTML como sendo um arquivo html e, no wizard, selecione o next, para selecionar uma das várias opções de facelets disponíveis e não fazer uma gambiarra com o jsp.
Fiz como você sugeriu, e agora ao invés disso:
<?xml version="1.0" encoding="ISO-8859-1"?>
Valor: #{exibeNumero.numero}
Apareceu isso:
Valor: #{exibeNumero.numero}
Estou achando que é a minha versão do eclipse, o que você acha?
Em todo o caso, vou baixar a versão atual do eclipse para maiores pormenores…
drsmachado
Não tem nada a ver com a versão do eclipse.
Faça o seguinte.
Crie um novo projeto do tipo “Dynamic Web Project” no eclipse. Na primeira aba do wizard, onde pede o nome do projeto, clique em “Modify” na parte Configuration e marque a opção “JavaServer Faces”.
Clique em Ok e em next.
Na tela “JSF Capabilities”, remova o URL Mapping patterns que existir e insira ali:
*.jsf
Clique em finish.
Crie um arquivo chamado MeuBean.java com o código
@ManagedBean(name="meuBean")publicclassMeuBean{privateStringvalor;publicMeuBean(){valor="Este é um exemplo";}//getters e setters}
E um arquivo html chamado index.xhtml (com esta extensão) e insira o código
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"xmlns:h="http://java.sun.com/jsf/html"xmlns:f="http://java.sun.com/jsf/core"xmlns:ui="http://java.sun.com/jsf/facelets"xmlns:mj="http://mojarra.dev.java.net/mojarra_ext"><h:head><title>Exemplo</title></h:head><h:body>
#{meuBean.valor}
</h:body></html>
A
Andr_de_Souza_Vieira
drsmachado:
Não tem nada a ver com a versão do eclipse.
Faça o seguinte.
Crie um novo projeto do tipo "Dynamic Web Project" no eclipse. Na primeira aba do wizard, onde pede o nome do projeto, clique em "Modify" na parte Configuration e marque a opção "JavaServer Faces".
Clique em Ok e em next.
Na tela "JSF Capabilities", remova o URL Mapping patterns que existir e insira ali:
*.jsf
Clique em finish.
Crie um arquivo chamado MeuBean.java com o código
@ManagedBean(name="meuBean")publicclassMeuBean{privateStringvalor;publicMeuBean(){valor="Este é um exemplo";}//getters e setters}
E um arquivo html chamado index.xhtml (com esta extensão) e insira o código
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"xmlns:h="http://java.sun.com/jsf/html"xmlns:f="http://java.sun.com/jsf/core"xmlns:ui="http://java.sun.com/jsf/facelets"xmlns:mj="http://mojarra.dev.java.net/mojarra_ext"><h:head><title>Exemplo</title></h:head><h:body>
#{meuBean.valor}
</h:body></html>
Olha só o que apareceu, é serio:
#{meuBean.valor}
drsmachado
Me diga uma coisa, qual a parte do
você não entendeu?
1 - Renomeie o arquivo para index.xhtml
2 - Coloque o código que está na minha resposta anterior dentro dele
A
Andr_de_Souza_Vieira
drsmachado:
Me diga uma coisa, qual a parte do
você não entendeu?
1 - Renomeie o arquivo para index.xhtml
2 - Coloque o código que está na minha resposta anterior dentro dele
Fiz conforme você sugeriu e o problema continua… tem outra ideia?
drsmachado
[xiita mode: on]
Sim. Desista. Você nunca vai conseguir. Você é incapaz de fazer isso. Melhor pensar em coisas que exijam menos cérebro, quem sabe assim dê certo.
[/xiita mode: off]
Cara, é impossível não dar certo. Posta de novo o que você alterou. Se estiver certo e não funcionar, eu saio do guj.
A
Andr_de_Souza_Vieira
drsmachado:
[xiita mode: on]
Sim. Desista. Você nunca vai conseguir. Você é incapaz de fazer isso. Melhor pensar em coisas que exijam menos cérebro, quem sabe assim dê certo.
[/xiita mode: off]
Cara, é impossível não dar certo. Posta de novo o que você alterou. Se estiver certo e não funcionar, eu saio do guj.
Ele está com no formato .jsp com uns erros de sintaxe ao executar, pois falta alguns componentes para o formato .jsp.
Entretanto, eu criei outro no formato .jsp( padrão do eclipse ) e deu o mesmo resultado.
Att, André Vieira
drsmachado
Eu estou num ambiente corporativo, não posso acessar sites de downloads.
Como eu havia dito, compacte-o (em formato zip) e anexe a tua resposta aqui, como fez com as imagens.
A
Andr_de_Souza_Vieira
drsmachado:
Eu estou num ambiente corporativo, não posso acessar sites de downloads.
Como eu havia dito, compacte-o (em formato zip) e anexe a tua resposta aqui, como fez com as imagens.
Em anexo a aplicação JEE, sem o jar do JSF, pois ultrapassava o limite de upload!
drsmachado
Andr?de Souza Vieira:
drsmachado:
Eu estou num ambiente corporativo, não posso acessar sites de downloads.
Como eu havia dito, compacte-o (em formato zip) e anexe a tua resposta aqui, como fez com as imagens.
Em anexo a aplicação JEE, sem o jar do JSF, pois ultrapassava o limite de upload!
Não irei nem comentar.
A
Andr_de_Souza_Vieira
drsmachado:
Andr?de Souza Vieira:
drsmachado:
Eu estou num ambiente corporativo, não posso acessar sites de downloads.
Como eu havia dito, compacte-o (em formato zip) e anexe a tua resposta aqui, como fez com as imagens.
Em anexo a aplicação JEE, sem o jar do JSF, pois ultrapassava o limite de upload!
Não irei nem comentar.
Consegui fazer, o que eu estava errando era no arquivo web.xml era a tag url-pattern que deve ser do tipo da página.
Muito obrigado mesmo! Sua ajuda foi muito importante para sanar essa dúvida!
Espero poder ajudar você ou a outros futuramente, como todos nós sabemos que
uma mão lava a outra!
Até mais.
Att, André Vieira
A
Andr_de_Souza_Vieira
Galera, meu problema foi resolvido…
o que eu tenho para deixar para vocês é o meu conhecimento adquirido nesse aspecto que é:
O arquivo web.xml é vital para o desenvolvimento JEE, e o pattern-url que se encontra nele deve
estar configurado como o formato da página, senão ele não irá funcionar algumas funcionalidades, no meu
caso foi a hash tag que não teve nenhuma funcionalidade…
Muito obrigado a todos que ajudaram!
at+
Att, André Vieira
A
Andr_de_Souza_Vieira
Galera consegui definitivamente achar o problema, na qual era as aplicações que não estava no lado do servidor,
então ela não ia achar nunca a bean, depois de ter feito isso, apareceu a funcionalidade da hash tag.