JSF: Dúvida com datatable

Olá!
Estou tentando fazer um datatable que me retorne uma lista e em cada linha retornada tenha uma coluna com um botao ou link q me mande para uma proxima pagina.
A primeira parte de listar eu consegui, o q nao consegui é ao clicar no botao ele ir para a proxima pagina.
E o interessante que se eu colocar o mesmo botao, com as mesmas configurações fora do datatable ele vai para outra página.
Alguem pode me dá uma dica???

<%@taglib uri="http://java.sun.com/jstl/core" prefix="c1"%><%@taglib
	uri="http://richfaces.org/rich" prefix="rich"%><%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@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 HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Alocação de turmas nas salas</title>
</head>
<body>
	<f:view>
	<h:form>
		<center><h3>Alocação das turmas nas salas</h3></center>
		<h:outputText value="Campus:" />
		<h:selectOneMenu id="campus" style="width: 114px" value="#{bAloca.codcampus}">   
			<f:selectItems value="#{bCampus.listarCampus}"/>
		</h:selectOneMenu>
		<br>
		<h:outputText value="Turma:"/>
		<h:selectOneMenu id="turma" style="width: 125px" value="#{bAloca.codturma}">
			<f:selectItems value="#{bCampus.listarTurmas}"/>
		</h:selectOneMenu>
		<br>
		<h:outputText value="Hora inicial:"/>
		<h:selectOneMenu id="horainicio" style="width: 47px" value="#{bAloca.horainicio}">
			<f:selectItem itemLabel="00" itemValue="00"/>
			<f:selectItem itemLabel="01" itemValue="01"/>
			<f:selectItem itemLabel="02" itemValue="02"/>
			<f:selectItem itemLabel="03" itemValue="03"/>
			<f:selectItem itemLabel="04" itemValue="04"/>
			<f:selectItem itemLabel="05" itemValue="05"/>
			<f:selectItem itemLabel="06" itemValue="06"/>
			<f:selectItem itemLabel="07" itemValue="07"/>
			<f:selectItem itemLabel="08" itemValue="08"/>
			<f:selectItem itemLabel="09" itemValue="09"/>
			<f:selectItem itemLabel="10" itemValue="10"/>
			<f:selectItem itemLabel="11" itemValue="11"/>
			<f:selectItem itemLabel="12" itemValue="12"/>
			<f:selectItem itemLabel="13" itemValue="13"/>
			<f:selectItem itemLabel="14" itemValue="14"/>
			<f:selectItem itemLabel="15" itemValue="15"/>
			<f:selectItem itemLabel="16" itemValue="16"/>
			<f:selectItem itemLabel="17" itemValue="17"/>
			<f:selectItem itemLabel="18" itemValue="18"/>
			<f:selectItem itemLabel="19" itemValue="19"/>
			<f:selectItem itemLabel="20" itemValue="20"/>
			<f:selectItem itemLabel="21" itemValue="21"/>
			<f:selectItem itemLabel="22" itemValue="22"/>
			<f:selectItem itemLabel="23" itemValue="23"/>
		</h:selectOneMenu>	
		:
		<h:selectOneMenu id="minutoinicio" style="width: 47px" value="#{bAloca.minutoinicio}">
			<f:selectItem itemLabel="00" itemValue="00"/>
			<f:selectItem itemLabel="10" itemValue="10"/>
			<f:selectItem itemLabel="20" itemValue="20"/>
			<f:selectItem itemLabel="30" itemValue="30"/>
			<f:selectItem itemLabel="40" itemValue="40"/>
			<f:selectItem itemLabel="50" itemValue="50"/>
		</h:selectOneMenu>
		<br>
		<h:outputText value="Hora fim:"/>
		<h:selectOneMenu id="horafim" style="width: 47px" value="#{bAloca.horafim}">
			<f:selectItem itemLabel="00" itemValue="00"/>
			<f:selectItem itemLabel="01" itemValue="01"/>
			<f:selectItem itemLabel="02" itemValue="02"/>
			<f:selectItem itemLabel="03" itemValue="03"/>
			<f:selectItem itemLabel="04" itemValue="04"/>
			<f:selectItem itemLabel="05" itemValue="05"/>
			<f:selectItem itemLabel="06" itemValue="06"/>
			<f:selectItem itemLabel="07" itemValue="07"/>
			<f:selectItem itemLabel="08" itemValue="08"/>
			<f:selectItem itemLabel="09" itemValue="09"/>
			<f:selectItem itemLabel="10" itemValue="10"/>
			<f:selectItem itemLabel="11" itemValue="11"/>
			<f:selectItem itemLabel="12" itemValue="12"/>
			<f:selectItem itemLabel="13" itemValue="13"/>
			<f:selectItem itemLabel="14" itemValue="14"/>
			<f:selectItem itemLabel="15" itemValue="15"/>
			<f:selectItem itemLabel="16" itemValue="16"/>
			<f:selectItem itemLabel="17" itemValue="17"/>
			<f:selectItem itemLabel="18" itemValue="18"/>
			<f:selectItem itemLabel="19" itemValue="19"/>
			<f:selectItem itemLabel="20" itemValue="20"/>
			<f:selectItem itemLabel="21" itemValue="21"/>
			<f:selectItem itemLabel="22" itemValue="22"/>
			<f:selectItem itemLabel="23" itemValue="23"/>
		</h:selectOneMenu>	
		:
		<h:selectOneMenu id="minutofim" style="width: 47px" value="#{bAloca.minutofim}">
			<f:selectItem itemLabel="00" itemValue="00"/>	
			<f:selectItem itemLabel="10" itemValue="10"/>
			<f:selectItem itemLabel="20" itemValue="20"/>
			<f:selectItem itemLabel="30" itemValue="30"/>
			<f:selectItem itemLabel="40" itemValue="40"/>
			<f:selectItem itemLabel="50" itemValue="50"/>
		</h:selectOneMenu>
		<br>
		<h:outputText value="Dia da semana:"/>
		<h:selectOneMenu id="diasemana" style="width: 157px" value="#{bAloca.diasemana}">
			<f:selectItem itemLabel="segunda" itemValue="segunda"/>
			<f:selectItem itemLabel="terca" itemValue="terca"/>
			<f:selectItem itemLabel="quarta" itemValue="quarta"/>
			<f:selectItem itemLabel="quinta" itemValue="quinta"/>
			<f:selectItem itemLabel="sexta" itemValue="sexta"/>
			<f:selectItem itemLabel="sabado" itemValue="sabado"/>
		</h:selectOneMenu>	
		<br>
		<h:outputText value="Quantidade:"/>
		<h:inputText value="#{bAloca.quantidade}"/>
		<br>
		<h:commandButton value="mostrar" actionListener="#{bAloca.salasdisponiveis}"/><br><br>
		<rich:dataTable border="1" id="salas" value="#{bAloca.listaSalaDisponivel}" var="salas">
			<h:column id="descricao">
				<h:outputText value="#{salas.dscSala}"></h:outputText>
				
				<f:facet name="header">
					<h:outputText value="descricao"></h:outputText>
				</f:facet>
			</h:column>
			<h:column id="capacidade">
				<h:outputText value="#{salas.capacidade}"></h:outputText>
				<f:facet name="header">
					<h:outputText value="capacidade"></h:outputText>
				</f:facet>
			</h:column>
			<h:column id="arcondicionado">
				<h:outputText value="#{salas.arCondicionado}"></h:outputText>
				<f:facet name="header">
					<h:outputText value="Ar condicionado"></h:outputText>
				</f:facet>
			</h:column>
			<h:column id="ventilador">
				<h:outputText value="#{salas.ventilador}"></h:outputText>
				<f:facet name="header">
					<h:outputText value="ventilador"></h:outputText>
				</f:facet>
			</h:column>
			<h:column id="tipoquadro">
				<h:outputText value="#{salas.tipoQuadro}"></h:outputText>
				<f:facet name="header">
					<h:outputText value="Tipo do Quadro"></h:outputText>
				</f:facet>
			</h:column>
			<h:column id="salvar">
				<f:facet name="header">
					<h:outputText value="Salvar"></h:outputText>
				</f:facet>
				<h:commandButton value="Salvar" action="#{bAloca.confirmaAlocaForm}">
				</h:commandButton>  

			</h:column>
		
		</rich:dataTable>
	</h:form>
	</f:view>
	
</body>
</html>

seu managed bean está com escopo de request?
se for tenta colocar um a4j:keepalive na sua página.

Amigo só uma pergunta

para a action = action="#{bAloca.confirmaAlocaForm}"

Você adicionou

Abraço

Se já fez isso poste novamente :wink:

Opa!Vlw por terem respondido!
Esta como request sim.Para que serve e onde eu colocaria esse a4j:keepalive ?

E meu faces-config esta assim:

<navigation-rule> 
 <from-view-id>/alocaturma.jsp</from-view-id>
  <navigation-case>
   <from-action>#{bAloca.confirmaAlocaForm}</from-action>
   <from-outcome>sucesso</from-outcome>
   <to-view-id>/confirmaaloca.jsp</to-view-id>
  </navigation-case>
  <navigation-case>
   <from-action>#{bAloca.confirmaAlocaForm}</from-action>
   <from-outcome>falha</from-outcome>
   <to-view-id>/erro.jsp</to-view-id>
  </navigation-case>
 </navigation-rule>

Resolvido!
Coloquei o escopo como session e funcionou.Na verdade o problema é q eu estava trabalhando com um actionlistener para passar os dados para o bean e o bean precisa ser de sessão.

Valeu galera!!!

Então, vc não precisa deixar o seu bean com escopo de sessão não. Basta usar a tag <a4j:keepAlive beanName=“bAloca” /> na sua página.
qquer coisa dá uma olhada na doc do richfaces que lá tem uma explicação sobre essa tag. :slight_smile:

Blz!
Vc teria algum exemplo de uma datatable parecida com essa acima, mas ao inves de ter um botao, ter um commandlink e param para passar os dados de uma determinada linha da datatable???

Eu tentei assim e nao deu certo:

<rich:dataTable border="1" id="salas" value="#{bAloca.listaSalaDisponivel}" var="salas">
			<h:column id="descricao">
				<h:outputText value="#{salas.dscSala}"></h:outputText>
				
				<f:facet name="header">
					<h:outputText value="descricao"></h:outputText>
				</f:facet>
			</h:column>
			<h:column id="capacidade">
				<h:outputText value="#{salas.capacidade}"></h:outputText>
				<f:facet name="header">
					<h:outputText value="capacidade"></h:outputText>
				</f:facet>
			</h:column>
			<h:column id="arcondicionado">
				<h:outputText value="#{salas.arCondicionado}"></h:outputText>
				<f:facet name="header">
					<h:outputText value="Ar condicionado"></h:outputText>
				</f:facet>
			</h:column>
			<h:column id="ventilador">
				<h:outputText value="#{salas.ventilador}"></h:outputText>
				<f:facet name="header">
					<h:outputText value="ventilador"></h:outputText>
				</f:facet>
			</h:column>
			<h:column id="tipoquadro">
				<h:outputText value="#{salas.tipoQuadro}"></h:outputText>
				<f:facet name="header">
					<h:outputText value="Tipo do Quadro"></h:outputText>
				</f:facet>
			</h:column>
			<h:column id="salvar">
				<f:facet name="header">
					<h:outputText value="Salvar"></h:outputText>
				</f:facet>
				<f:param value="{salas.codSala}"></f:param>
<!--chama a proxima pagina e envia o dado do parametro por um event  -->
				<h:commandLink action="#{bAloca.confirmaAlocaForm}" actionListener="#{bAloca.confirmaAloca}">
					<h:outputText value="Salvar"></h:outputText>
				</h:commandLink>

			</h:column>
		
		</rich:dataTable>

no bean:

public void confirmaAloca(ActionEvent event){
		FacesContext fc = FacesContext.getCurrentInstance();
		UIParameter parametroCodSala = (UIParameter) event.getComponent().findComponent("codsala");
		codsala = parametroCodSala.getValue().toString();
		Session session = null;
		try{
			session = HibernateUtil.getSession();
			SalaPK id = new SalaPK();
			id.setCodSala(codsala);
			dadosSala = new Dao<Sala>(session,Sala.class).procura(id);
			
		}catch (Exception e) {
			System.out.println("falha ao buscar sala em confirmaAloca");
			e.printStackTrace();
			
		}finally{
			session.close();
		}
	}