JSF Problemas com t:saveState

1 resposta
ernanii

Estou tendo problemas em passar meu bean da tela de listagem para a edicao:

O usuarioBean esta como request.
Debugei e na linha 16 do usuarioBean, ele realmente pega todos os dados do usuario em questao a ser editado do datatable, mas quando vai para a tela onde ha o formulario de cadastro/edicao os campos aparecem todo em branco, ou seja ele nao guarda/envia o estado, to com 2 dias nisso =( e parece ser algo simplista. :?

eis o [listagem.xhtml]

<ui:define name="body">
			<t:saveState id="save" value="#{usuarioBean.usuario}"/>  
			<h:form>
				<div align="center"><h:panelGrid columns="1" columnClasses="center">
					
					<rich:dataTable id="listagem" value="#{usuarioBean.listarUsuarios}"
						var="usuario"
						onRowMouseOver="this.style.backgroundColor='#F1F1F1'"
						onRowMouseOut="this.style.backgroundColor='#{a4jSkin.tableBackgroundColor}'"
						border="1" cellspacing="0" cellpadding="2" rows="5"
						styleClass="rich-table" >
						<rich:column>
							
							<f:facet name="header">
								<h:outputText value="ID" />
							</f:facet>
                                                <h:outputText value="#{usuario.codigo}" />
						</rich:column>
.......os outros outputs.......
						<rich:column>
							<f:facet name="header">
								<h:outputText value="" />
							</f:facet>
							<h:commandLink action="#{usuarioBean.excluir}"
								value="#{msg['commons.excluir']}">
								<f:setPropertyActionListener value="#{usuarioBean}" target="#{usuario}" />
							</h:commandLink>
							<br />
							<h:commandLink action="#{usuarioBean.editar}"  value="#{msg['commons.editar']}">
								<f:setPropertyActionListener value="#{usuarioBean}" target="#{usuario}" />
							</h:commandLink>
						</rich:column>
						...........
		</ui:define>
	</ui:composition>

eis o treco que interessa do [UsuarioBean.java]

public class UsuarioBean implements Serializable{
	private static final long serialVersionUID = 8798812512424289176L;
	/**
	 * Referencia para a camada de regras de negocio.
	 */
	private UsuarioBusiness usuarioBusiness = new UsuarioBusiness();
	/**
	 * Usuario a serusado no form.
	 */
	private Usuario usuario=new Usuario();
        
        public ListDataModel getListarUsuarios() {
		return usuarioBusiness.listarUsuariosBusiness();
	}
        public String editar(){
		usuario=usuarioBusiness.getUsuarioManaged();
		return "cadastrarUsuario";
	}

eis o UsuarioBusiness.java

public class UsuarioBusiness {
	
	private UsuarioDAO usuarioDao=new UsuarioDAO();
	private ListDataModel model;
        public Usuario getUsuarioManaged(){
		Usuario usuario = (Usuario) model.getRowData();
		return usuario;
	}
        public void excluirUsuario() {
		usuarioDao.excluirUsuario(getUsuarioManaged());
	}
.....
       public ListDataModel listarUsuariosBusiness() {
		return model = new ListDataModel (usuarioDao.listarUsuariosDAO());
	}
eis o [cadastro.xhtml]
<ui:composition template="/templates/common.xhtml">
	<ui:define name="header">
	Cadastro de Usuários
	</ui:define>
	
	<ui:define name="body">
	<t:saveState id="save2" value="#{usuarioBean.usuario}"/>  	
		<h:form id="usuarioForm">
			<h:panelGrid columns="3" columnClasses="right,left,left">
				<h:outputLabel for="emailInput"
					value="#{msg['page.usuarios.label.email']}" />
				<h:inputText id="emailInput" value="#{usuarioBean.usuario.email}"
					required="true" requiredMessage="#{msg['erros.cadastro.nome']}" />
				<h:message for="nomeInput" style="color: red" />
....form basico de edicao...........
<h:commandButton action="#{usuarioBean.salvar}"
				value="#{msg['commons.salvar']}" />

			<h:commandButton action="listarUsuarios"
				value="#{msg['commons.voltar']}" immediate="true" />
		</h:form>
	</ui:define>
</ui:composition>
eis o [web.xml]
<managed-bean>
  <managed-bean-name>usuarioBean</managed-bean-name>
  <managed-bean-class>beans.UsuarioBean</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
 </managed-bean>
 
 <navigation-rule>
  <navigation-case>  
   <from-outcome>cadastrarUsuario</from-outcome>
   <to-view-id>/pages/cadastrousuario.xhtml</to-view-id>
   <redirect/>
  </navigation-case>
 </navigation-rule>
 
 <navigation-rule>
  <navigation-case>
   <from-outcome>listarUsuarios</from-outcome>
   <to-view-id>/pages/listarusuario.xhtml</to-view-id>
  </navigation-case>
 </navigation-rule>
pois entao, desculpem o tamanho codigo postado, mais para melhor percepeção de quem possame ajudar...

ah, o excluir fuciona perfeitamente.
Grato desde ja!
Abs. :wink:

1 Resposta

ernanii

help again. :?

Criado 9 de setembro de 2008
Ultima resposta 9 de set. de 2008
Respostas 1
Participantes 1