Paginacao e selecionar uma linha com richfaces?

Opa…alguém já fez paginação utilizando o richfaces?

To com a documentação mas to com algumas dúvidas pq eu coloquei o código igual e ele não gerou a paginação:

<rich:dataTable value="#{empresa.listaCargasCadastradas}" var="carga" id="cargaRich" rows="1">
			<rich:column>
				<f:facet name="header"><h:outputText value="Descricao"/> </f:facet>
				<h:outputText value="#{carga.descricao}"/>
			</rich:column>
			<f:facet name="rodape">
				<rich:datascroller pageIndexVar="pageIndex" pagesVar="pages">
					<f:facet name="pages">
						<h:outputText value="#{pageIndex}/#{pages}"/>
					</f:facet>
				</rich:datascroller>
			</f:facet>
		</rich:dataTable>

Eu preciso colocar algum código no meu backing bean?

E a outra dúvida é como selecionar o objeto de uma lista! Alguém pode me dar uma força?

[]'s

a paginação já resolvi, mas o problema de selecionar uma linha ainda não…alguém?

solucao

<rich:dataTable value="#{empresa.listaCargasCadastradas}" var="carga" id="cargaRich" rows="1">
				<rich:column>
					<f:facet name="header"><h:outputText value="Descricao"/> </f:facet>
					<h:outputText value="#{carga.descricao}"/>
				</rich:column>
				<f:facet name="footer">
					<rich:datascroller for="cargaRich" maxPages="20"></rich:datascroller>
				</f:facet>
			</rich:dataTable>

Para selecionar uma linha por exemplo coloque um botao em uma coluna e ligue ele ao metodo de edicao onde vc consegue pegar a linha corrente usando model.getRowData(),mas explique o que realmente precisa fazer pois fica + facil ajudar :wink:

Entao, eu qria pegar o conteudo daquela linha pq nela tem um objeto que eu preciso pra poder passar para outra jsp!

Existem 1000 maneiras de se fazer isso um exemplo:

public Cidade getCidadeFromEditOrDelete() {
		IDaoCidade idao = new DaoCidade();
		Cidade cidade = (Cidade) idao.findCidade(id);	
	        //ou Cidade cidade =(Cidade) model.getRowdata();
		return cidade;

	}	
	
       /*entaum coloque um botao editar em sua tabela e no action dele chame o metodo editar,
          aqui no caso eu tenho uma pagina de edicao que exibe informações da cidade que eu quiser.*/
	public String editar() {
		Cidade cidade = getCidadeFromEditOrDelete();
		setCidade(cidade);
		return "editarCidade";
	}


flws.

o que é esse model?

eu não posso somente mandar uma lista com os objetos pq eu to usando hibernate e não sei como usar minhas querys do hibernate para retornar um result set!

[]'s

model seria um DataModel ,veja como eu utlizo ele em minha aplicaçao:


public DataModel getTodosClientes() {		 
		IDaoCliente ldao = new DaoCliente();
		model = new ListDataModel(ldao.ListarTodos());			
		return model;

	}

Depois qdo precisar exibir dados em uma tabela ele facilita mto pra vc,pois fornece varios metodos para trabalhar com os dado.

ai para trabalhar com os dados eu crio o HTMLDataTable da tabela e dou um getSelectRow?

Como funciona para trabalhar com os dados? ( essa é minha dúvida hehe )

Amigo vc ceia um <rich:dataTable e liga ele em um datamodel que retorna uma lista de alguma coisa clientes ,cidades sei lá,daew vc define seus metodos no modelo incluir excluir …blablabla,mas me diga o que vc realmente quer fazer???>

vou ter um radiobutton unico pra cada linha, ai a pessoa seleciona 1 e tem os botoes de editar e excluir, ai eu preencho o objeto e mando pra jsp com os dados preenchidos pra poder tomar a decisão de alterar ou excluir…entendeu?

[]'s

veja


http://www.4shared.com/file/50793000/1bba7136/Figura1.html?

tenho uma tabela onde exibo os dados,nesta tabela tenho botoes editar/excluir/novo…
ao clicar em editar tenho um metodo no meu bean que faz isso:

public Cidade getCidadeFromEditOrDelete() {
		IDaoCidade idao = new DaoCidade();
		Cidade cidade = (Cidade) idao.findCidade(id);		
//                ou Cidade cidade=(Cidade) model.getRowData();
		return cidade;

	}
	
	public String editar() {
		Cidade cidade = getCidadeFromEditOrDelete();
		setCidade(cidade);
		return "editarCidade";

	}

o metodo me retorna editarCidade que me direciona para uma pagina de edicao,mas vc pode fazer a edicao na propria tabela msm aew so depende de vc,espero que ajude.
T+.

não deu muito certo…ele lançou um IllegalArgumentException e ainda deixa eu selecionar todos os radios…mesmo se eu colocar id nos radios, continua com pau…olha o que eu fiz:

<rich:dataTable value="#{empresa.tabelaCargasModel}" var="carga"
				id="tabelaCargas" rows="20" binding="#{empresa.htmlDataTableCargas}">
				<rich:column>
					<f:facet name="headerDescricao">
						<h:outputText value="" />
					</f:facet>
					<h:selectOneRadio><f:selectItem itemLabel="" /></h:selectOneRadio>
				</rich:column>
				<rich:column>
					<f:facet name="headerDescricao">
						<h:outputText value="Descricao" />
					</f:facet>
					<h:outputText value="#{carga.descricao}" />
				</rich:column>
				<f:facet name="footer">
					<rich:datascroller for="tabelaCargas" maxPages="20"></rich:datascroller>
				</f:facet>
			</rich:dataTable>
	public DataModel getTabelaCargasModel() throws HibernateException, SQLException {
		tabelaCargasModel = new ListDataModel(new ArrayList<CargaBean>(getEmpresaBean().getCargas()));
		return tabelaCargasModel;
	}

public String atualizarCarga(){
		CargaBean cargaSelecionada = (CargaBean)getHtmlDataTableCargas().getRowData();
                setCargaBean(cargaSelecionada)
		return "atualizarCarga";
	}

Não seria tabelaCargasModel


 1. public String atualizarCarga(){  
   2.         CargaBean cargaSelecionada = (CargaBean)  tabelaCargasModel.getRowData();  
   3.                 setCargaBean(cargaSelecionada)  
   4.         return "atualizarCarga";  
   5.     }  

???

nãosei…mas o tabelaCargasModel não funciona…ele não me tras o objeto preenchido, ele só tras o primeiro objeto da lista… e minha idéia era usar o radio button… eu só qro o objeto selecionado no radio button…mas o radio não funciona pq ele deixa eu selecionar todos…

para pegar a linha corrente na tabela use seuModelo.getRowData(); e só isso que é necessario,ou passe um identificador da linha com f:param ou f:setpropertieActionListener na sua tabela.

vai uma tabela simples que fiz aqui sem facelets


&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%&gt;
&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%&gt;
&lt;%@ taglib uri="http://richfaces.org/rich" prefix="rich"%&gt;
&lt;%@ taglib uri="http://richfaces.org/a4j" prefix="a4j"%&gt;
&lt;%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%&gt;
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;&lt;/title&gt;
&lt;link rel="stylesheet" type="text/css"
	href='&lt;%= request.getContextPath() + "/css/tabelas.css" %&gt;'&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;f:view&gt;
	&lt;a4j:form&gt;
		&lt;center&gt;&lt;c:import url="/view/topo.jsp"&gt;&lt;/c:import&gt;

		&lt;center&gt;&lt;rich:separator width="967"&gt;&lt;/rich:separator&gt;&lt;/center&gt;
		&lt;center&gt;&lt;rich:datascroller align="center" for="tbestado"
			maxPages="20" style=" width : 900px;" /&gt; &lt;rich:dataTable
			onRowMouseOver="this.style.backgroundColor='#F1F1F1'"
			onRowMouseOut="this.style.backgroundColor='#{a4jSkin.tableBackgroundColor}'"
			cellpadding="0" cellspacing="0" rows="15" width="700" border="0"
			var="est" value="#{Estado.model}" id="tbestado"
			style=" width : 736px;"&gt;
			&lt;f:facet name="header"&gt;
				&lt;rich:columnGroup&gt;
					&lt;rich:column rowspan="2"&gt;
						&lt;h:outputText value="#{msg.acoes}"&gt;&lt;/h:outputText&gt;
						&lt;rich:separator height="12" styleClass="tooltip"&gt;&lt;/rich:separator&gt;
						&lt;a4j:commandLink action="#{Estado.novo}" immediate="true"
							id="novo" status="status"&gt;
							&lt;h:graphicImage value="/images/BOTOES/novo1.png" width="20"
								height="20" styleClass="imagem"&gt;
							&lt;/h:graphicImage&gt;
						&lt;/a4j:commandLink&gt;
						&lt;rich:spacer width="13"&gt;&lt;/rich:spacer&gt;
						&lt;a4j:commandLink action="#{Estado.getTodos}" immediate="true"
							id="atualizar" status="status" reRender="tbestado"&gt;
							&lt;h:graphicImage value="/images/BOTOES/Restart.png" width="20"
								height="20" styleClass="imagem"&gt;
							&lt;/h:graphicImage&gt;
						&lt;/a4j:commandLink&gt;
					&lt;/rich:column&gt;
					&lt;rich:column colspan="4"&gt;



						&lt;h:outputText value="#{msg.listaestado}"&gt;&lt;/h:outputText&gt;
					&lt;/rich:column&gt;
					&lt;rich:column breakBefore="true"&gt;

						&lt;h:outputText value="#{msg.codigo}" /&gt;

					&lt;/rich:column&gt;

					&lt;rich:column&gt;

						&lt;h:outputText value="#{msg.estado}" /&gt;

					&lt;/rich:column&gt;

					&lt;rich:column&gt;

						&lt;h:outputText value="#{msg.sigla}" /&gt;

					&lt;/rich:column&gt;



				&lt;/rich:columnGroup&gt;

			&lt;/f:facet&gt;
			&lt;rich:column&gt;
				&lt;center&gt;&lt;h:commandLink action="#{Estado.novo}"&gt;

				&lt;/h:commandLink&gt; &lt;a4j:commandLink action="#{Estado.editar}" id="editar"
					status="status"&gt;
					&lt;f:setPropertyActionListener target="#{Estado.id}"
						value="#{est.estadoid}" /&gt;
					&lt;h:graphicImage value="/images/BOTOES/edit.png" width="20"
						height="20" styleClass="imagem"&gt;
					&lt;/h:graphicImage&gt;
				&lt;/a4j:commandLink&gt; &lt;rich:spacer width="13" /&gt; &lt;a4j:commandLink
					onclick="javascript:Richfaces.showModalPanel('confimaExclusao')"
					id="excluir" reRender="tbestado"&gt;

					&lt;f:setPropertyActionListener target="#{Estado.id}"
						value="#{est.estadoid}" /&gt;
					&lt;h:graphicImage value="/images/BOTOES/Trash2.png" width="20"
						height="20" styleClass="imagem"&gt;
					&lt;/h:graphicImage&gt;
				&lt;/a4j:commandLink&gt;&lt;/center&gt;
			&lt;/rich:column&gt;





			&lt;rich:column filterBy="#{est.estadoid}" filterEvent="onkeyup"
				sortBy="#{est.estadoid}"&gt;
				&lt;f:facet name="header"&gt;
					&lt;h:outputText value="#{msg.pesq}"&gt;&lt;/h:outputText&gt;
				&lt;/f:facet&gt;
				&lt;center&gt;&lt;h:outputText value="#{est.estadoid}"&gt;&lt;/h:outputText&gt;
				&lt;/center&gt;
			&lt;/rich:column&gt;

			&lt;rich:column filterBy="#{est.uf}" filterEvent="onkeyup"
				sortBy="#{est.uf}"&gt;
				&lt;f:facet name="header"&gt;
					&lt;h:outputText value=""&gt;&lt;/h:outputText&gt;
				&lt;/f:facet&gt;
				&lt;center&gt;&lt;h:outputText value="#{est.uf}"&gt;&lt;/h:outputText&gt;&lt;/center&gt;
			&lt;/rich:column&gt;

			&lt;rich:column filterBy="#{est.sigla}" filterEvent="onkeyup"
				sortBy="#{est.sigla}"&gt;
				&lt;f:facet name="header"&gt;
					&lt;h:outputText value=""&gt;&lt;/h:outputText&gt;
				&lt;/f:facet&gt;
				&lt;center&gt;&lt;h:outputText value="#{est.sigla}"&gt;&lt;/h:outputText&gt;
				&lt;/center&gt;
			&lt;/rich:column&gt;


		&lt;/rich:dataTable&gt;&lt;/center&gt;
		&lt;div id="novo"&gt;&lt;rich:toolTip for="novo" followMouse="true"
			direction="top-right" showDelay="500" styleClass="tooltip"&gt;
			&lt;h:outputText value="#{msg.novo}"&gt;&lt;/h:outputText&gt;
		&lt;/rich:toolTip&gt;&lt;/div&gt;

		&lt;div id="atualizar"&gt;&lt;rich:toolTip for="atualizar"
			followMouse="true" direction="top-right" showDelay="500"
			styleClass="tooltip"&gt;
			&lt;h:outputText value="#{msg.atualizar}"&gt;&lt;/h:outputText&gt;
		&lt;/rich:toolTip&gt;&lt;/div&gt;


		&lt;center&gt;&lt;rich:separator width="967"&gt;&lt;/rich:separator&gt;&lt;/center&gt;
		&lt;rich:modalPanel id="confimaExclusao" width="350" height="100"
			autosized="true"&gt;
			&lt;f:facet name="header"&gt;
				&lt;h:panelGroup&gt;
					&lt;h:outputText value="#{msg.deletar}"&gt;&lt;/h:outputText&gt;
				&lt;/h:panelGroup&gt;
			&lt;/f:facet&gt;
			&lt;f:facet name="controls"&gt;
				&lt;h:panelGroup&gt;
					&lt;h:graphicImage value="/images/BOTOES/cancel.png"
						style="cursor:pointer" id="hidelink3" /&gt;
					&lt;rich:componentControl for="confimaExclusao" attachTo="hidelink3"
						operation="hide" event="onclick" /&gt;
				&lt;/h:panelGroup&gt;
			&lt;/f:facet&gt;
			&lt;rich:panel&gt;
				&lt;rich:separator&gt;&lt;/rich:separator&gt;
				&lt;center&gt;&lt;h:outputText value="#{msg.excluirRegistro}"&gt;
				&lt;/h:outputText&gt; &lt;h:panelGrid columns="2"&gt;
					&lt;a4j:commandButton value="#{msg.excluir}"
						action="#{Estado.excluir}" id="confimaexcluir" reRender="tbestado"
						oncomplete="javascript:Richfaces.hideModalPanel('confimaExclusao')"&gt;&lt;/a4j:commandButton&gt;
					&lt;a4j:commandButton value="#{msg.cancelar}"
						onclick="javascript:Richfaces.hideModalPanel('confimaExclusao')"&gt;&lt;/a4j:commandButton&gt;
				&lt;/h:panelGrid&gt;&lt;/center&gt;
				&lt;rich:separator&gt;&lt;/rich:separator&gt;
			&lt;/rich:panel&gt;
			<br />

		&lt;/rich:modalPanel&gt; &lt;c:import url="/view/statusBarLista.jsp"&gt;&lt;/c:import&gt;&lt;/center&gt;

	&lt;/a4j:form&gt;


&lt;/f:view&gt;
&lt;/body&gt;
&lt;/html&gt;

o bean:

package com.Lgweb.Tcc.Controller;

import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import com.Lgweb.Tcc.Dao.DaoEstado;
import com.Lgweb.Tcc.Idao.IDaoEstado;
import com.Lgweb.Tcc.Model.Estado;
import javax.faces.event.ActionEvent;

public class ControlEstado {
	private DataModel model;
	private Estado estado;
	private Integer id;

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public ControlEstado() {
	}

	public Estado findEstado(Integer id) {
		IDaoEstado Idao = new DaoEstado();
		return (Estado) Idao.findEstado(id);
	}

	// metodo para criar novo estado no modal!
	public void Novo(ActionEvent e) {
		estado = new Estado();
		setEstado(estado);

	}

	public String novo() {
		estado = new Estado();
		return "novoEstado";
	}

	public Estado getEstado() {
		return estado;
	}

	public void setEstado(Estado estado) {
		this.estado = estado;
	}

	public DataModel getTodos() {

		IDaoEstado ldao = new DaoEstado();
		model = new ListDataModel(ldao.ListarTodos());

		return model;

	}

	// Modificado para trabalhar com fPropertieActionListener e filterBy
	public Estado getEstadoFromEditOrDelete() {
		IDaoEstado idao = new DaoEstado();
		Estado estado = idao.findEstado(id);
		return estado;

	}

	public String editar() {
		Estado estado = getEstadoFromEditOrDelete();
		setEstado(estado);
		return "editarEstado";

	}

	public String update() {
		IDaoEstado ldao = new DaoEstado();
		ldao.atualizar(estado);
		return "sucessoEstado";
	}

	public String excluir() {
		IDaoEstado ldao = new DaoEstado();
		Estado estado = getEstadoFromEditOrDelete();
		ldao.excluir(estado);
		getTodos();
		return "sucessoDeleteEstado";

	}

	public String create() {
		IDaoEstado ldao = new DaoEstado();
		ldao.salvar(estado);
		getTodos();
		return "sucesso_incEstado";
	}

	public DataModel getTodosComNome() {
		IDaoEstado idao = new DaoEstado();
		model = new ListDataModel(idao.ListarTodos());
		return model;

	}

	public javax.faces.model.DataModel getModel() {
		return model;
	}

	public void setModel(javax.faces.model.DataModel model) {
		this.model = model;
	}

	public ControlEstado(Estado estado) {
		super();
		this.estado = estado;
	}

}

Dá uma olhada aew e ve se ajuda.

Com aquele a4j:commandLink deu certo…mas eu qria um radio button hehe =/

mas valeu amigo…

[]'s