Básico JSF - ManagedBean

3 respostas
rafael.espiritosanto

Pessoal,

É realmente necessário que os managedBeans tenhos os métodos
getters e setters ?

O motivo é que no nosso sistema usamos uma classe só pra representar
os dados da vista (ex:modeloVO). Essa classe só possui os atributos da vista
ela é populada automaticamente pelo nosso framework.

A idéia seria ver se é possível substituir nosso framework pelo JSF.

Só que a existência de métodos get e set complicaria a manutenção do sistema.

3 Respostas

thiago.correa

Sim, todos os atributos da tela precisam ter os getters e os setters. O managed bean representa a tela e o controller junto o que se pode fazer é ter um VO e no teu managed bean ter um atributo desse teu VO. E na página JSF você acessaria assim: #{managedBean.atributoVo.atributo}

Funciona normal, inclusive eu gosto mais dessa abnordagem!

rafael.espiritosanto

A configuração do faces-config.xml fica assim:

<managed-bean>
 	<description>Agenda do usuário</description>
	<managed-bean-name>agenda</managed-bean-name>
 	<managed-bean-class>demo.AgendaDB</managed-bean-class>
 	<managed-bean-scope>request</managed-bean-scope>
 </managed-bean>
 
 <managed-bean>
 	<description>Classe de acoes</description>
 	<managed-bean-name>agendaAction</managed-bean-name>
 	<managed-bean-class>demo.AgendaAction</managed-bean-class>
 	<managed-bean-scope>request</managed-bean-scope>
 	<managed-property>
 		<property-class>demo.AgendaDB</property-class>
 		<property-name>vo</property-name>
 		<value>#{agenda}</value>
 	</managed-property>
 </managed-bean>

O Exadel tá reclamando do managed-property, reclamando da falta
de elementos. Mas já tem o property-class e property-name junto com
o seu valor.

Valeu!

rafael.espiritosanto

Eu corrigi o problema no faces config.

Mas o que acontece agora é que quando eu faco uma busca. o Bean nao vem
com os valores atribuidos

package demo;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class AgendaAction {

	private AgendaDB voAgenda;
	private final String CONDICAO_SUCESSO = "sucesso";
	private final String CONDICAO_FALHA = "falha";
	
	private PreparedStatement ps;
	private Connection con;
	private ResultSet res;
	
	public AgendaAction() {
		try {
			Class.forName("com.mysql.jdbc.Driver");
			con = DriverManager.getConnection("jdbc:mysql://localhost:3306/BancoJSF", "oi", "oi");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	public String inserir() {
		try {
			ps = con.prepareStatement("insert into agenda values (null, ?, ?)");
			ps.setString(1, voAgenda.getNome());
			ps.setString(2, voAgenda.getEmail());
			ps.executeUpdate();
			
			return CONDICAO_SUCESSO;
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return CONDICAO_FALHA;
	}
	
	public String buscar() {
		try {
			ps = con.prepareStatement("select * from agenda where nome = ?");
			ps.setString(1, voAgenda.getNome());
			res = ps.executeQuery();
			if (res.next()) {
				voAgenda.setEmail(res.getString("email"));
				return CONDICAO_SUCESSO;
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	
		return CONDICAO_FALHA;
	}
	
	public AgendaDB getVoAgenda() {
		return voAgenda;
	}
	
	public void setVoAgenda(AgendaDB voAgenda) {
		this.voAgenda = voAgenda;
	}
}
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="t" %>
<html>
	<head>
		<title></title>
	</head>
	<body>
		<f:view>
			Resultado Busca<br />
			Nome:<h:outputText value="#{agendaAction.voAgenda.nome}" /><br />
			Email:<h:outputText value="#{agendaAction.voAgenda.email}" /><br />
			<h:outputLink value="greeting.jsf">
				<f:verbatim>Voltar</f:verbatim>
			</h:outputLink>
		</f:view>
	</body>	
</html>
<?xml version="1.0"?>
<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"
                              "http://java.sun.com/dtd/web-facesconfig_1_0.dtd">
<faces-config>
 <managed-bean>
  <description>Input Value Holder</description>
  <managed-bean-name>GetNameBean</managed-bean-name>
  <managed-bean-class>demo.GetNameBean</managed-bean-class>
  <managed-bean-scope>session</managed-bean-scope>
  <managed-property>
   <property-name>userName</property-name>
   <property-class>java.lang.String</property-class>
   <value/>
  </managed-property>
 </managed-bean>
 
 <managed-bean>
 	<description>Agenda do usuário</description>
	<managed-bean-name>agenda</managed-bean-name>
 	<managed-bean-class>demo.AgendaDB</managed-bean-class>
 	<managed-bean-scope>request</managed-bean-scope>
 </managed-bean>
 
 <managed-bean>
 	<description>Acao do servico de agenda</description>
 	<managed-bean-name>agendaAction</managed-bean-name>
 	<managed-bean-class>demo.AgendaAction</managed-bean-class>
 	<managed-bean-scope>request</managed-bean-scope>
 	<managed-property>
 		<description>JavaBean da agenda</description>
 		<property-name>voAgenda</property-name>
 		<property-class>demo.AgendaDB</property-class>
 		<value>#{agenda}</value>
 	</managed-property>
 </managed-bean>
 
 <navigation-rule>
  <from-view-id>/pages/inputname.jsp</from-view-id>
  <navigation-case>
   <to-view-id>/pages/greeting.jsp</to-view-id>
   <redirect/>
  </navigation-case>
 </navigation-rule>
 
 <navigation-rule>
  <from-view-id>/pages/greeting.jsp</from-view-id>
  <navigation-case>
   <from-outcome>buscar</from-outcome>
   <to-view-id>/pages/buscar.jsf</to-view-id>
   <redirect/>
  </navigation-case>
  <navigation-case>
   <from-outcome>inserir</from-outcome>
   <to-view-id>/pages/inserir.jsf</to-view-id>
   <redirect/>
  </navigation-case>
 </navigation-rule>
 
 <navigation-rule>
 	<from-view-id>/pages/buscar.jsp</from-view-id>
 	<navigation-case>
 		<from-outcome>sucesso</from-outcome>
 		<to-view-id>/pages/buscar_ok.jsp</to-view-id>
 		<redirect/>
 	</navigation-case>
 	<navigation-case>
 		<from-outcome>falha</from-outcome>
 		<to-view-id>/pages/buscar_falha.jsp</to-view-id>
 		<redirect/>
 	</navigation-case>
 </navigation-rule>
 
 <navigation-rule>
 	<from-view-id>/pages/inserir.jsp</from-view-id>
 	<navigation-case>
 		<from-outcome>sucesso</from-outcome>
 		<to-view-id>/pages/inserir_ok.jsp</to-view-id>
 		<redirect/>
 	</navigation-case>
 	<navigation-case>
 		<from-outcome>falha</from-outcome>
 		<to-view-id>/pages/inserir_falha.jsp</to-view-id>
 		<redirect/>
 	</navigation-case>
 </navigation-rule>
</faces-config>

Valeu!!!

Criado 2 de abril de 2007
Ultima resposta 6 de abr. de 2007
Respostas 3
Participantes 2