Pessoal,
Dado o seguinte exercício :
- Elaborar um managed bean que represente os dados de uma pessoa, possuindo as seguintes propriedades:
* Nome
* Idade
* Lista de gêneros de músicas
* Um objeto Endereço (logradouro, numero, cep)
* Uma lista de objetos Telefone (cada um tem o tipo e o número)
- Inicialize esses beans no faces-config
- O nome e a idade da pessoa devem agora vir como parâmetros da requisição
- Modifique a página de impressão para acrescentar as novas propriedades.
Classe PessoaBean
package beans;
import java.util.ArrayList;
import java.util.List;
public class PessoaBean {
private String nome;
private Integer idade;
private ArrayList<String> generosMusicais;
private EnderecoBean endereco;
private List<TelefoneBean> telefone = new ArrayList<TelefoneBean>();
public PessoaBean() {
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public Integer getIdade() {
return idade;
}
public void setIdade(Integer idade) {
this.idade = idade;
}
public ArrayList<String> getGenerosMusicais() {
return generosMusicais;
}
public void setGenerosMusicais(ArrayList<String> generosMusicais) {
this.generosMusicais = generosMusicais;
}
public EnderecoBean getEndereco() {
return endereco;
}
public void setEndereco(EnderecoBean endereco) {
this.endereco = endereco;
}
public List<TelefoneBean> getTelefones() {
return telefone;
}
public void setTelefones(List<TelefoneBean> telefones) {
this.telefone = telefones;
}
}
Classe TelefoneBean
package beans;
public class TelefoneBean {
private String tipo;
private String numero;
public TelefoneBean() {
}
public String getTipo() {
return tipo;
}
public void setTipo(String tipo) {
this.tipo = tipo;
}
public String getNumero() {
return numero;
}
public void setNumero(String numero) {
this.numero = numero;
}
}
faces-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer
Faces Config 1.1//EN" "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
<faces-config>
<managed-bean>
<managed-bean-name>PessoaBean</managed-bean-name>
<managed-bean-class>beans.PessoaBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<managed-property>
<property-name>generosMusicais</property-name>
<list-entries>
<value>Rock</value>
<value>Reggae</value>
<value>Pop</value>
</list-entries>
</managed-property>
</managed-bean>
<managed-bean>
<managed-bean-name>EnderecoBean</managed-bean-name>
<managed-bean-class>beans.EnderecoBean</managed-bean-class>
<managed-bean-scope>none</managed-bean-scope>
<managed-property>
<property-name>logradouro</property-name>
<value>Avenida Epitácio Pessoa</value>
</managed-property>
<managed-property>
<property-name>numero</property-name>
<value>450</value>
</managed-property>
<managed-property>
<property-name>cep</property-name>
<value>58030-110</value>
</managed-property>
</managed-bean>
<managed-bean>
<managed-bean-name>TelefoneBean</managed-bean-name>
<managed-bean-class>beans.TelefoneBean</managed-bean-class>
<managed-bean-scope>none</managed-bean-scope>
<managed-property>
<property-name>tipo</property-name>
<list-entries>
<value>fixo</value>
<value>celular OI</value>
<value>celular TIM</value>
</list-entries>
</managed-property>
<managed-property>
<property-name>numero</property-name>
<list-entries>
<value>3224-6123</value>
<value>8725-5025</value>
<value>9919-3435</value>
</list-entries>
</managed-property>
</managed-bean>
<navigation-rule>
<from-view-id>/PessoaFormBean.jsp</from-view-id>
<navigation-case>
<from-outcome>exibe</from-outcome>
<to-view-id>/exibeBean.jsp</to-view-id>
</navigation-case>
</navigation-rule>
</faces-config>
PessoaFormBean.jsf
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<f:view>
<head>
<title>Insert title here</title>
</head>
<body>
<h:form>
<h:panelGrid columns='2'>
<h:outputText value='Nome:'/>
<h:inputText value='#{PessoaBean.nome}'/>
<h:outputText value='Idade:'/>
<h:inputText value='#{PessoaBean.idade}'/>
<h:commandButton type='submit' value='Enviar' action='exibe'/>
</h:panelGrid>
</h:form>
</body>
</f:view>
</html>
exibeBean.jsf
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>
Insert title here
</title>
</head>
<body>
<f:view>
<h:outputText>Dados do Bean Pessoa</h:outputText>
<br />
<h:outputText>--------------------</h:outputText>
<br />
<h:outputText value="Nome : #{PessoaBean.nome}"></h:outputText>
<br />
<h:outputText value="Idade : #{PessoaBean.idade}"></h:outputText>
<br/>
<h:outputText value="Gêneros Musicais"></h:outputText>
<br />
<h:outputText value="1o gênero musical #{PessoaBean.generosMusicais[0]}"></h:outputText>
<br />
<h:outputText value="2o gênero musical #{PessoaBean.generosMusicais[1]}"></h:outputText>
<br />
<h:outputText value="3o gênero musical #{PessoaBean.generosMusicais[2]}"></h:outputText>
<br />
<h:outputText>Endereco :</h:outputText>
<h:outputText value=" #{PessoaBean.endereco.logradouro}"></h:outputText>
<h:outputText value=" nº #{PessoaBean.endereco.numero}"></h:outputText>
<br />
<h:outputText value="CEP : #{PessoaBean.endereco.cep}"></h:outputText>
<br/>
<h:outputText value="Telefones"></h:outputText>
<br/>
<h:outputText value="1o telefone : #{PessoaBean.telefone[0].tipo}"></h:outputText>
<br />
<h:outputText value=" #{PessoaBean.telefone[0].numero}"></h:outputText>
<br />
<br />
<h:outputText value="2o telefone : #{PessoaBean.telefone[1].tipo}"></h:outputText>
<br />
<h:outputText value=" #{PessoaBean.telefone[1].numero}"></h:outputText>
<br />
<br />
<h:outputText value="3o telefone : #{PessoaBean.telefone[2].tipo}"></h:outputText>
<br />
<h:outputText value=" #{PessoaBean.telefone[2].numero}"></h:outputText>
<br />
<br />
</f:view>
</body>
</html>
Estou com as seguintes dúvidas :
1a) A inicialização do bean TelefoneBean está correta ?
Aparentemente não está acusando nenhum erro de sintaxe, mas pode estar havendo algum erro de modelagem.
2a) Porque os telefones não estão sendo exibidos na página JSF (exibeBean.jsf) ?
Estou tentando resolver isto há mais de uma semana e ainda não consegui.
Agradeço imensamente a quem puder e se dispor a me ajudar.
Max