Recuperando página atual do dataScroller do RichFaces!

4 respostas
J

Dae galera, eu estou tentando implementar a paginação sob demanda, já tentei de várias formas, queria saber com vcs como eu consigo capturar no managedBean a página atual. Eu tentei de várias formas:

Meu jsp:
<rich:dataTable value="#{arquiteturaMB.dataModel}" var="arquitetura" border="1"
					binding="#{arquiteturaMB.dataTable}"
					styleClass="gridBig" align="center" id="lista" rows="4">

					<rich:column width="28px">
							<a4j:commandLink immediate="true" oncomplete="Richfaces.showModalPanel('mp');">
								<f:setPropertyActionListener value="#{arquitetura}" target="#{arquiteturaMB.arquiteturaNovo}" />
		  						<h:graphicImage value="/img/excluir.gif" styleClass="imagemSemBorda"/>
		  						<a4j:support id="outname_rerender" event="onfocus" reRender="cxaMensagem" focus="testes" />
							</a4j:commandLink>
					</rich:column>
					<f:facet name="footer">
						<rich:datascroller for="lista" maxPages="20" id="scroll1"/>
					</f:facet>
				</rich:dataTable>

Meu MB:

private DataModel dataModel;
private HtmlDataTable dataTable;
...
// getter ...


public DataModel getDataModel() throws PersistenciaException {
		int rows = getDataTable().getRows();
		BaseInterfaceDAO<Integer, Arquitetura> dao = DAOFactory.getDAO(Arquitetura.class);
		int totalListSize = (int) dao.count(null); 
		//getDataTable().
		List<Arquitetura> pagedList = dao.findLimited(null, getDataTable().getFirst(), getDataTable().getRows());
		if( pagedList == null ) pagedList = new ArrayList<Arquitetura>();		
		dataModel = new ExtendedDataModel<Arquitetura>(pagedList, totalListSize); 
		return dataModel;
	}

Esse trecho eu tento pegar esse valores, mas eu preciso uma forma de capturar a página atual....

getDataTable().getFirst(), getDataTable().getRows()

Já tentei fazer um binding do rich:datascroller dessa forma:

MB:

HtmlDataScroller scroll;

Só que sempre que tento usar esse componente no MB é lançado uma excessão.

Alguém sabe como pegar a página atual que o cara está?
Agradeço!

4 Respostas

gcouti

No componente do richfaces existe uma propriedade chamada pagesVar

marcos4ft

sei q é old, mas to com essa dúvida, preciso recuperar a pagina atual.

Eu to fazendo assim:

public void numDados(){ private HtmlDatascroller scroller; int y = scroller.getPage(); }

<rich:datascroller action="#{empresaMB.numDados}" pagesVar="pag" binding="#{empresaMB.scroller}"></rich:datascroller>

Só que o problema é que se estou na pagina 2 por exemplo e vou pra proxima pagina, ele joga o 2 ao inves da pagina atual

marcos4ft

ninguem?? :cry:

lucianotome

Cara, eu uso assim, não ficou muito elegante mas funcionou:

<rich:datascroller actionListener="#{produtoManager.onAction}" page="1" rendered="true" id="scroller" align="center" for="dataProdutos" maxPages="20" renderIfSinglePage="true" scrollerListener="#{produtoManager.doScroll}"/>

e no manageBean:

public void onAction(ActionEvent actionEvent) {

  	  if(actionEvent.getComponent() instanceof HtmlDatascroller ){

  		  HtmlDatascroller datascroller=(HtmlDatascroller) actionEvent.getComponent();

  		  DataScrollerEvent eve=(DataScrollerEvent) actionEvent;

  		  if(eve.getNewScrolVal().equals("first")){

  			  pagAtual=0;

  		  }else if(eve.getNewScrolVal().equals("last")){

  			  pagAtual=(eve.getPage()-1)*12;

  		  }else if(eve.getNewScrolVal().equals("fastforward")){

  			  System.out.println(eve.getPage());

  			  pagAtual=(eve.getPage()-1)*12;

  		  }else if(eve.getNewScrolVal().equals("next")){

  			  pagAtual=(eve.getPage()-1)*12;

  			  

  		  }else if(eve.getNewScrolVal().equals("fastrewind")){

  			  pagAtual=(eve.getPage()*12)-12;

  		  }else if(eve.getNewScrolVal().equals("previous")){

  			  pagAtual=(eve.getPage()*12)-12;

  		  }else{

  			  pagAtual=(Integer.parseInt(eve.getNewScrolVal())*12)-12;

  		  }

  		  

  	  }

    }

Lembrando que o row do meu dataTable esta em 12

rows="12"
Criado 20 de fevereiro de 2009
Ultima resposta 22 de jan. de 2010
Respostas 4
Participantes 4