Alteração em CRUD não está sendo possível

Pessoal, tenho um CRUD, somente a opção de Alterar, não está funcionando, ao Clicar em Alterar não carrega o objeto selecionado com seus valores, aparece tudo bem branco, oq poderia ser, obrigado?

package br.com.colibri.hotelaria.tipo;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class Tipo implements Serializable {

	private static final long serialVersionUID = 3949697711539626907L;

	@Id
	@GeneratedValue
	@Column(name = "TIPO_ID")
	private Long id;

	@Column(name = "TIPO_NOME")
	private String nome;

	@Column(name = "TIPO_VALOR")
	private double valor;

	// get's e set's
}

Meu ManagedBean

package br.com.colibri.hotelaria.tipo;

import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.component.UIData;

import org.hibernate.Session;
import org.hibernate.Transaction;

import br.com.colibri.hotelaria.util.BaseBean;
import br.com.colibri.hotelaria.util.HibernateUtil;
import br.com.colibri.hotelaria.util.SessionUtil;

@ManagedBean
@RequestScoped
public class TipoBean  {

	private Tipo tipo = new Tipo();
	private List<Tipo> lista = new ArrayList<Tipo>();
	private UIData tipoSelecionado;

	@SuppressWarnings("unchecked")
	public List<Tipo> listaTodosTipos() {

		Session session = HibernateUtil.getSession();

		List<Tipo> list = session.createQuery("from Tipo").list();

		return list;
	}

	public List<Tipo> getLista() {
		lista = listaTodosTipos();
		return lista;
	}

	public void setLista(List<Tipo> lista) {
		this.lista = lista;
	}

	public String novo() {
		if (this.tipo == null)
			this.tipo = new Tipo();
		
		return "tipoIncluir";
	}

	public String editar() {
		this.tipo = (Tipo) tipoSelecionado.getRowData();
		return "tipoAlterar";
	}

	public String excluir() {
		tipo = (Tipo) tipoSelecionado.getRowData();

		Session session = HibernateUtil.getSession();
		Transaction t = session.beginTransaction();
		try {
			session.delete(tipo);
			t.commit();
			SessionUtil.addSuccess("OperacaoSucesso");
			tipo = new Tipo();
		} catch (Exception e) {
			t.rollback();
			SessionUtil.addError("OperacaoFracasso");
		} finally {
			if (session.isOpen())
				session.close();
		}
		return null;
	}

	public String atualizar() {

		Session session = HibernateUtil.getSession();
		Transaction t = session.beginTransaction();
		try {
			session.update(tipo);
			t.commit();
			SessionUtil.addSuccess("OperacaoSucesso");
		} catch (Exception e) {
			t.rollback();
			SessionUtil.addError("OperacaoFracasso");
		} finally {
			if (session.isOpen())
				session.close();
			tipo = new Tipo();
		}
		return "tipoManter";
	}

	public String salvar() {

		Session session = HibernateUtil.getSession();
		Transaction t = session.beginTransaction();
		try {
			session.merge(tipo);
			t.commit();
			SessionUtil.addSuccess("OperacaoSucesso");
			tipo = new Tipo();
		} catch (Exception e) {
			t.rollback();
			SessionUtil.addError("OperacaoFracasso");
		} finally {
			if (session.isOpen())
				session.close();
		}
		return "tipoManter";
	}

	public Tipo getTipo() {
		return tipo;
	}

	public void setTipo(Tipo tipo) {
		this.tipo = tipo;
	}

	public UIData getTipoSelecionado() {
		return tipoSelecionado;
	}

	public void setTipoSelecionado(UIData tipoSelecionado) {
		this.tipoSelecionado = tipoSelecionado;
	}

}

Meu 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:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:p="http://primefaces.prime.com.tr/ui">

<ui:composition template="/templates/interna.xhtml">

	<ui:define name="corpo">

		<h:panelGrid style="margin: 0 auto;">

			<f:view>

				<h:form id="edicao">

					<p:messages />

					<p:dataTable style="width: 655px height: 200px" scrollable="false"
						loadingMessage="Carregando..." rows="10"
						emptyMessage="Nenhum registro encontrado."
						value="#{tipoBean.lista}" var="t" id="tipos"
						binding="#{tipoBean.tipoSelecionado}" paginator="true"
						paginatorPosition="bottom">

						<p:column width="70">
							<f:facet name="header">Id</f:facet>
							<h:outputText value="#{t.id}" />
						</p:column>

						<p:column width="500">
							<f:facet name="header">Nome</f:facet>
							<h:outputText value="#{t.nome}" />
						</p:column>

						<p:column width="370">
							<f:facet name="header">Valor R$</f:facet>
							<h:outputText value="#{t.valor}" />
						</p:column>

						<p:column width="15" style="text-align:center">
							<f:facet name="header">Incluir</f:facet>
							<p:commandLink action="#{tipoBean.novo}" id="btn_incluir"
								ajax="false">
								<h:graphicImage library="imagens" name="add.png"
									immediate="true" />
							</p:commandLink>
						</p:column>


						<p:column width="15" style="text-align:center">
							<f:facet name="header">Alterar</f:facet>
							<p:commandLink action="#{tipoBean.editar}" id="btn_editar"
								ajax="false">
								<h:graphicImage library="imagens" name="page_edit.png"
									immediate="true" />
							</p:commandLink>
						</p:column>

						<p:column width="15" style="text-align:center">
							<f:facet name="header">Excluir</f:facet>
							<p:commandLink action="#{tipoBean.excluir}" update="edicao"
								id="btn_excluir"
								onclick="if (!confirm('Confirma a exclusão ?')) return false;">
								<h:graphicImage library="imagens" name="page_delete.png" />
							</p:commandLink>
						</p:column>

					</p:dataTable>

				</h:form>

			</f:view>

		</h:panelGrid>

	</ui:define>
</ui:composition>
</html>

FacesConfig

	<!-- Tipo -->

	<navigation-rule>
		<from-view-id>/pages/tipo/tipoManter.xhtml</from-view-id>
		<navigation-case>
			<from-outcome>tipoAlterar</from-outcome>
			<to-view-id>/pages/tipo/tipoAlterar.xhtml</to-view-id>
			<redirect></redirect>
		</navigation-case>
		<navigation-case>
			<from-outcome>tipoIncluir</from-outcome>
			<to-view-id>/pages/tipo/tipoIncluir.xhtml</to-view-id>
			<redirect></redirect>
		</navigation-case>
	</navigation-rule>

	<navigation-rule>
		<from-view-id>/pages/tipo/tipoIncluir.xhtml</from-view-id>
		<navigation-case>
			<from-outcome>tipoManter</from-outcome>
			<to-view-id>/pages/tipo/tipoManter.xhtml</to-view-id>
			<redirect></redirect>
		</navigation-case>
	</navigation-rule>

	<navigation-rule>
		<from-view-id>/pages/tipo/tipoAlterar.xhtml</from-view-id>
		<navigation-case>
			<from-outcome>tipoManter</from-outcome>
			<to-view-id>/pages/tipo/tipoManter.xhtml</to-view-id>
			<redirect></redirect>
		</navigation-case>
	</navigation-rule>

[quote=fernandoh.computacao]Pessoal, tenho um CRUD, somente a opção de Alterar, não está funcionando, ao Clicar em Alterar não carrega o objeto selecionado com seus valores, aparece tudo bem branco, oq poderia ser, obrigado?

package br.com.colibri.hotelaria.tipo;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class Tipo implements Serializable {

	private static final long serialVersionUID = 3949697711539626907L;

	@Id
	@GeneratedValue
	@Column(name = "TIPO_ID")
	private Long id;

	@Column(name = "TIPO_NOME")
	private String nome;

	@Column(name = "TIPO_VALOR")
	private double valor;

	// get's e set's
}

Meu ManagedBean

package br.com.colibri.hotelaria.tipo;

import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.component.UIData;

import org.hibernate.Session;
import org.hibernate.Transaction;

import br.com.colibri.hotelaria.util.BaseBean;
import br.com.colibri.hotelaria.util.HibernateUtil;
import br.com.colibri.hotelaria.util.SessionUtil;

@ManagedBean
@RequestScoped
public class TipoBean  {

	private Tipo tipo = new Tipo();
	private List<Tipo> lista = new ArrayList<Tipo>();
	private UIData tipoSelecionado;

	@SuppressWarnings("unchecked")
	public List<Tipo> listaTodosTipos() {

		Session session = HibernateUtil.getSession();

		List<Tipo> list = session.createQuery("from Tipo").list();

		return list;
	}

	public List<Tipo> getLista() {
		lista = listaTodosTipos();
		return lista;
	}

	public void setLista(List<Tipo> lista) {
		this.lista = lista;
	}

	public String novo() {
		if (this.tipo == null)
			this.tipo = new Tipo();
		
		return "tipoIncluir";
	}

	public String editar() {
		this.tipo = (Tipo) tipoSelecionado.getRowData();
		return "tipoAlterar";
	}

	public String excluir() {
		tipo = (Tipo) tipoSelecionado.getRowData();

		Session session = HibernateUtil.getSession();
		Transaction t = session.beginTransaction();
		try {
			session.delete(tipo);
			t.commit();
			SessionUtil.addSuccess("OperacaoSucesso");
			tipo = new Tipo();
		} catch (Exception e) {
			t.rollback();
			SessionUtil.addError("OperacaoFracasso");
		} finally {
			if (session.isOpen())
				session.close();
		}
		return null;
	}

	public String atualizar() {

		Session session = HibernateUtil.getSession();
		Transaction t = session.beginTransaction();
		try {
			session.update(tipo);
			t.commit();
			SessionUtil.addSuccess("OperacaoSucesso");
		} catch (Exception e) {
			t.rollback();
			SessionUtil.addError("OperacaoFracasso");
		} finally {
			if (session.isOpen())
				session.close();
			tipo = new Tipo();
		}
		return "tipoManter";
	}

	public String salvar() {

		Session session = HibernateUtil.getSession();
		Transaction t = session.beginTransaction();
		try {
			session.merge(tipo);
			t.commit();
			SessionUtil.addSuccess("OperacaoSucesso");
			tipo = new Tipo();
		} catch (Exception e) {
			t.rollback();
			SessionUtil.addError("OperacaoFracasso");
		} finally {
			if (session.isOpen())
				session.close();
		}
		return "tipoManter";
	}

	public Tipo getTipo() {
		return tipo;
	}

	public void setTipo(Tipo tipo) {
		this.tipo = tipo;
	}

	public UIData getTipoSelecionado() {
		return tipoSelecionado;
	}

	public void setTipoSelecionado(UIData tipoSelecionado) {
		this.tipoSelecionado = tipoSelecionado;
	}

}

Meu 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:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:p="http://primefaces.prime.com.tr/ui">

<ui:composition template="/templates/interna.xhtml">

	<ui:define name="corpo">

		<h:panelGrid style="margin: 0 auto;">

			<f:view>

				<h:form id="edicao">

					<p:messages />

					<p:dataTable style="width: 655px height: 200px" scrollable="false"
						loadingMessage="Carregando..." rows="10"
						emptyMessage="Nenhum registro encontrado."
						value="#{tipoBean.lista}" var="t" id="tipos"
						binding="#{tipoBean.tipoSelecionado}" paginator="true"
						paginatorPosition="bottom">

						<p:column width="70">
							<f:facet name="header">Id</f:facet>
							<h:outputText value="#{t.id}" />
						</p:column>

						<p:column width="500">
							<f:facet name="header">Nome</f:facet>
							<h:outputText value="#{t.nome}" />
						</p:column>

						<p:column width="370">
							<f:facet name="header">Valor R$</f:facet>
							<h:outputText value="#{t.valor}" />
						</p:column>

						<p:column width="15" style="text-align:center">
							<f:facet name="header">Incluir</f:facet>
							<p:commandLink action="#{tipoBean.novo}" id="btn_incluir"
								ajax="false">
								<h:graphicImage library="imagens" name="add.png"
									immediate="true" />
							</p:commandLink>
						</p:column>


						<p:column width="15" style="text-align:center">
							<f:facet name="header">Alterar</f:facet>
							<p:commandLink action="#{tipoBean.editar}" id="btn_editar"
								ajax="false">
								<h:graphicImage library="imagens" name="page_edit.png"
									immediate="true" />
							</p:commandLink>
						</p:column>

						<p:column width="15" style="text-align:center">
							<f:facet name="header">Excluir</f:facet>
							<p:commandLink action="#{tipoBean.excluir}" update="edicao"
								id="btn_excluir"
								onclick="if (!confirm('Confirma a exclusão ?')) return false;">
								<h:graphicImage library="imagens" name="page_delete.png" />
							</p:commandLink>
						</p:column>

					</p:dataTable>

				</h:form>

			</f:view>

		</h:panelGrid>

	</ui:define>
</ui:composition>
</html>

FacesConfig

[code]

<navigation-rule>
	<from-view-id>/pages/tipo/tipoManter.xhtml</from-view-id>
	<navigation-case>
		<from-outcome>tipoAlterar</from-outcome>
		<to-view-id>/pages/tipo/tipoAlterar.xhtml</to-view-id>
		<redirect></redirect>
	</navigation-case>
	<navigation-case>
		<from-outcome>tipoIncluir</from-outcome>
		<to-view-id>/pages/tipo/tipoIncluir.xhtml</to-view-id>
		<redirect></redirect>
	</navigation-case>
</navigation-rule>

<navigation-rule>
	<from-view-id>/pages/tipo/tipoIncluir.xhtml</from-view-id>
	<navigation-case>
		<from-outcome>tipoManter</from-outcome>
		<to-view-id>/pages/tipo/tipoManter.xhtml</to-view-id>
		<redirect></redirect>
	</navigation-case>
</navigation-rule>

<navigation-rule>
	<from-view-id>/pages/tipo/tipoAlterar.xhtml</from-view-id>
	<navigation-case>
		<from-outcome>tipoManter</from-outcome>
		<to-view-id>/pages/tipo/tipoManter.xhtml</to-view-id>
		<redirect></redirect>
	</navigation-case>
</navigation-rule>

[/code][/quote]

Tenta usar isso abaixo do seu dataTable:

<p:ajax event="rowSelect" update=":edicao" />

ThEDiegO
Não deu certo nao… =\