Qual é o componente utilizado para mostrar a bean na tela?[Resolvido]

24 respostas
A

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:

import javax.faces.bean.ManagedBean;

@ManagedBean // Notation JSF
public class ExibeNumero { // Classe exibir numero
	
	private int numero;
	
	public ExibeNumero()
	{
		numero = 10;
	}

	public int getNumero() {
		return numero;
	}

	public void setNumero(int numero) {
		this.numero = numero;
	}

}
// HTML
<?xml version="1.0" encoding="ISO-8859-1" ?>
<jsp:root xmlns: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.page language="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>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-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>

O que pode ser? Onde deve ser configurado?

Muito obrigado,

att, André Vieira

24 Respostas

otOtavio

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
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?
web.xml está configurado assim:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>testando</display-name>
  <welcome-file-list>
    <welcome-file>teste.xhtml</welcome-file>
  </welcome-file-list>
  <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
</web-app>
Obs.: Configuração gerada automaticamente pelo eclipse. faces-config.xml está configurado assim:
<?xml version="1.0" encoding="UTF-8"?>

<faces-config
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
    version="2.0">

</faces-config>

E o resultado no navegador está assim:

Valor: #{exibeNumero.numero}

Att, André Vieira

drsmachado

Se você não mudou, o padrão do Eclipse irá exigir que sua página seja chamada pelo padrão:

http://servidor:porta/faces/nome_da_pagina.extensao

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

drsmachado:
Se você não mudou, o padrão do Eclipse irá exigir que sua página seja chamada pelo padrão:

http://servidor:porta/faces/nome_da_pagina.extensao

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

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")
public class MeuBean{
   private String valor;
   public MeuBean(){
     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"> 
<html xmlns="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
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")
public class MeuBean{
   private String valor;
   public MeuBean(){
     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"> 
<html xmlns="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

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

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.

Olha aí…


drsmachado

Tente trocar a url que está acessando por

http://localhost:8080/teste/index.xhtml

por

http://localhost:8080/teste/index.jsf

Lembre-se que isto foi definido no passo

A

drsmachado:
Tente trocar a url que está acessando por

http://localhost:8080/teste/index.xhtml

por

http://localhost:8080/teste/index.jsf

Lembre-se que isto foi definido no passo

Então, fiz isso novamente, incluindo todos os passos e não obtive sucesso!
.

drsmachado

Compacta teu projeto e me manda ele.

A

http://www.mediafire.com/?e85olacdl85d2s1

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

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

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

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

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.

Criado 19 de setembro de 2012
Ultima resposta 23 de set. de 2012
Respostas 24
Participantes 4