Boa noite, GUJ. Estou estudando sobre JSF 2 e estou tendo um probleminha e gostaria de saber onde estou errando.
index.xhtml
<?xml version='1.0' encoding='UTF-8' ?>
<!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:p="http://primefaces.org/ui"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core" >
<h:head>
<title></title>
</h:head>
<h:body>
<h:outputText value="#{UsuarioBean.usuario.nome}"/>
</h:body>
</html>
Usuario.java
package com.marcelodeandrade.pojo;
public class Usuario {
private String nome;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
UsuarioBean.java
package com.marcelodeandrade.bean;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import com.marcelodeandrade.pojo.Usuario;
@ManagedBean(name = "UsuarioBean")
@RequestScoped
public class UsuarioBean {
private Usuario usuario;
public UsuarioBean(){
System.out.println("####################");
Usuario usuario = new Usuario();
usuario.setNome("Marcelo");
}
public Usuario getUsuario() {
return usuario;
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
}
Ele não exibe o nome, gostaria de saber o que droga estou fazendo errado.
Boa noite pessoal!
Como você mapeou o jsf para ser acionado no seu web.xml? E por qual URL você está acessando?
Olá, Hebert. Meus xml estão dessa forma:
web.xml
<?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>ChatJSF</display-name>
<welcome-file-list>
<welcome-file>index.xhtml</welcome-file>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</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>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
</web-app>
faces-config.xml
<?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_1.xsd"
version="2.1">
</faces-config>
E por qual url você está chamando a aplicação?
Me perdoe. A URL é:
http://localhost:8080/ChatJSF/faces/index.xhtml
Ainda não obtive resultado. Tentei deixand o output dentro da tag forma mas sem resultados.
Reproduzi o seu projeto e realmente não exibe o nome. Alterei o web.xml para:
<?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" version="3.0">
<display-name>TesteGuj</display-name>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
</web-app>
deixano para acessar com nomeDoArquivo.jsf os padrões faces.
no teu usuariobean, você está criando um novo usuario e dando a este o nome marcelo, por isso não aparece. Olha teu construtor aqui:
private Usuario usuario;
public UsuarioBean(){
System.out.println("####################");
Usuario usuario = new Usuario();
usuario.setNome("Marcelo");
}
Note que você colocou Usuario usuario = new Usuario(), então você não esta utilizando o objeto da tua classe. Altere o contrutor para utilizar o da classe:
public UsuarioBean(){
System.out.println("####################");
usuario = new Usuario();
usuario.setNome("Marcelo");
}
veja se agora funciona
Obrigado pela ajuda, andre.froes.
O bean ficou da seguinte forma:
[code]package com.marcelodeandrade.bean;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.bean.SessionScoped;
import javax.faces.bean.ViewScoped;
import com.marcelodeandrade.pojo.Usuario;
@ManagedBean(name = “UsuarioBean”)
public class UsuarioBean {
private Usuario usuario;
public UsuarioBean(){
System.out.println("####################");
this.usuario = new Usuario();
this.usuario.setNome("Marcelo");
System.out.println(this.usuario.getNome());
}
public Usuario getUsuario() {
return usuario;
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
}[/code]