[RESOLVIDO]Paginacao JME

Galera preciso de uma ajuda. Aqui eu tenho a minha classe de extrato:

[code] public void execute(HttpServletRequest request, HttpServletResponse response, RequestContext context) throws Exception {

	List<Lancamento> lancamentoList = new ArrayList<Lancamento>();
	
	CarteiraVirtualService servico = ServiceLocator.getService(CarteiraVirtualService.class);
	
	String activationNumber = request.getParameter("activationNumber");
	
	EwAccount account = servico.getWalletByActivationNumber(Integer.parseInt(activationNumber));
	
	Integer periodoDias= Integer.parseInt(request.getParameter("periodoDias"));
	logger.debug("Periodo Dias: "+ periodoDias);
	
	String dataInicial= request.getParameter("dataInicial");
	
	String dataFinal= request.getParameter("dataFinal");
	
	if(periodoDias!= 0){
		lancamentoList = servico.buscarExtratoCarteiraPeriodo(periodoDias, account.getPkIdAccount());
	}else if(dataInicial !="" && dataFinal != ""){
		lancamentoList = servico.buscarExtratoCarteiraPeriodoDias(dataInicial, dataFinal, account.getPkIdAccount());
	}
	SimpleDateFormat sdf= new SimpleDateFormat("dd/MM/yyyy");
	
	Element root = context.getRootInit();
	
	Element xml = null;
	
	for (int i = 0; i < lancamentoList.size(); i++) {
    	
    	xml = XmlUtil.createElement(root, "extratos", null);
        Lancamento bean = lancamentoList.get(i) ;
        
        try {
        	if(bean != null){
                XmlUtil.createElement(xml, "dataLancamento", sdf.format(bean.getDataLancamento()));
                XmlUtil.createElement(xml, "tpTransact", bean.getEwTransact().getEwTransactDescription().getDescription(). toString());
            	XmlUtil.createElement(xml, "valorLancamento", bean.getValorLancamento().toString());
        	}

        } catch (Exception e) {
            logger.debug("erro: "+e.getMessage());
            e.printStackTrace();
        }
    }

	logger.info("[ExtratoPoup] XML: " + XmlUtil.writeXml(xml));

	context.setNextForm("extrato_carteira.xsl");

}[/code]

Esse lancamentoList me retorna 10 resultados… o problema é q na tela só dá para visualizar 9 resultados… ai que surge a dúvida por que agora terei que fazer uma paginação. Onde na primeira tela terá apenas 9 resultados, qdo o usuario apertar o botao avancar terá que ir para a segunda tela e mostrar apenas o resto do extrato… no meu caso só mais um resultado. Como fazer isso??

Amigo existe 2 tipos de paginação.
1º Paginação na pagina, com isso você apenas separar os valores trazidos de sua lista.
2º Paginação no banco, quando se traz varios resultados de uma vez não é interessante que traga do banco esse vasto valor, então você pagina trazendo apenas de 10 em 10, 20 em 20.

é interessante que você diga qual tipo de paginação que queria

JME não possui banco de dados.
O que está sendo usado como repositório é um arquivo XML, logo, a paginação desejada é na apresentação dos dados.

Fiz algumas alterações… vou postar assim, vejam se fica mais claro o q quero fazer:
Extrato:

[code]public void execute(HttpServletRequest request, HttpServletResponse response, RequestContext context) throws Exception {
logger.info(" ExtratoCarteira: ");

	List<Lancamento> lancamentoList = new ArrayList<Lancamento>();

	CarteiraVirtualService servico = ServiceLocator.getService(CarteiraVirtualService.class);

	String activationNumber = request.getParameter("activationNumber");

	EwAccount account = servico.getWalletByActivationNumber(Integer.parseInt(activationNumber));

	Integer periodoDias = Integer.parseInt(request.getParameter("periodoDias"));

	String dataInicial = request.getParameter("dataInicial");

	String dataFinal = request.getParameter("dataFinal");

	Integer page1= Integer.parseInt(request.getParameter("page"));
	
	if (periodoDias != 0) {
		lancamentoList = servico.buscarExtratoCarteiraPeriodo(periodoDias, account.getPkIdAccount());
	} else if (dataInicial != "" && dataFinal != "") {
		lancamentoList = servico.buscarExtratoCarteiraPeriodoDias(dataInicial, dataFinal, account.getPkIdAccount());
	}

	PageControl control = new PageControl(lancamentoList);

	List<Lancamento> page = control.getPage(page1);

	SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");

	Element root = context.getRootInit();

	Element xml = null;

	for (int i = 0; i < page.size(); i++) {

		xml = XmlUtil.createElement(root, "extratos", null);
		Lancamento bean = page.get(i);

		try {
			if (bean != null) {
				XmlUtil.createElement(xml, "dataLancamento", sdf.format(bean.getDataLancamento()));
				XmlUtil.createElement(xml, "tpTransact", bean.getEwTransact().getEwTransactDescription().getDescription().toString());
				XmlUtil.createElement(xml, "valorLancamento", bean.getValorLancamento().toString());
			}

		} catch (Exception e) {
			logger.debug("erro: " + e.getMessage());
			e.printStackTrace();
		}
	}

	logger.info("[ExtratoPoup] XML: " + XmlUtil.writeXml(xml));

	context.setNextForm("extrato_carteira.xsl");
	logger.info("[ExtatoPoup] OUT");

}[/code]

[code]public class PageControl {

private static final int DEFAULT_PAGE_SIZE = 8;

private List<Lancamento> stuffs;
private int pageSize = DEFAULT_PAGE_SIZE;

public PageControl(List<Lancamento> stuffs) {
	this.stuffs = stuffs;

}

private int getFirstItem(int page) {
	if (page < 1) {
		page = 1;
	}

	return (page - 1) * pageSize;
}

private int getLastItem(int page) {
	int toReturn = page * pageSize;

	if (toReturn > stuffs.size()) {
		return stuffs.size() - 1;
	}
	return toReturn;
}

public List<Lancamento> getPage(int page) {
	List<Lancamento> toReturn = new ArrayList<Lancamento>();

	for (int i = getFirstItem(page); i < getLastItem(page); i++) {
		toReturn.add(stuffs.get(page));
	}

	return toReturn;
}

public int getPageSize() {
	return pageSize;
}

public void setPageSize(int pageSize) {
	this.pageSize = pageSize;
}[/code]

extrato.xsl:

[code]



		<div style="LEFT:0px;TOP:0px">
			<img src="logo.png" />
		</div>

		<div style="LEFT:0px;TOP:70px">
			<img src="separador.png" />
		</div>

		<!-- StartContent -->
			<div style="LEFT:20px;TOP:50px;ALIGN:center;FONT:verdana12_bold">EXTRATO</div>

			<div style="LEFT:10px;TOP:80px;FONT:verdana12_bold">Data</div>
			<div style="LEFT:70px;TOP:80px;FONT:verdana12_bold">Tipo Transacao</div>
			<div style="LEFT:190px;TOP:80px;FONT:verdana12_bold">Valor</div>

			<xsl:for-each select="/ROOT/extratos">
				<div style="LEFT:10px;TOP:{number (80 + position() * 20)}px;FONT:Tahoma9"><xsl:value-of select="dataLancamento"/> </div>
				<div style="LEFT:80px;TOP:{number (80 + position() * 20)}px;FONT:Tahoma9"><xsl:value-of select="tpTransact"/> </div>
				<div style="LEFT:190px;TOP:{number (80 + position() * 20)}px;FONT:Tahoma9"><xsl:value-of select="valorLancamento"/> </div>
			</xsl:for-each>

		<div style="LEFT:10px;TOP:282px">
			<img src="bt_voltar_off.png" src2="bt_voltar_on.png" href="javascript:back()" CHECKED="true" key="AVK_SOFT1" />
		</div>
		
		<div style="LEFT:150px;TOP:282px">
			<img src="bt_continuar_off.png" src2="bt_continuar_on.png" href="javascript:post('NAO SEI O Q PASSAR AQUI?')" CHECKED="true" key="AVK_SOFT2" />
		</div>[/code]			

NESSA TELA DO XSL… ME TRAS 8 RESULTADOS… NO BOTAO CONITNUAR TENHO Q COLOCAR UM CLASSE(A MESMA ?)… PARA QUE ELE POSSA PEGAR O RESTANTE DO EXTRATO… É ISSO Q NAO ESTOU CONSEGUINDO FAZER ENTENDE?

Se eu não me engano, JME tem suporte à collections, certo?
Com collections e uma variável de controle, você consegue fazer isso.
Na primeira consulta, popule toda a lista e apresente apenas as 8 primeiras. Defina a variável de controle como 8.
Na segunda iteração, parta de 8 e vá até o próximo intervalo ou o fim da lista, o que vier primeiro.