Problema com displaytag

2 respostas
G

Estou utilizando displaytag para paginar com Struts 1.

Quando escolho por exemplo a página 5 nos links de paginação e depois deleto algum registro desta página (Chamo a Action que exclui o registro e depois chama a Action de listra novamente) ao invés de permanecer na página 5 é listada a página 1.

Como eu faço para manter a listagem da página 5 após a deleção?
Teria algum parametro para passar?

Sou iniciante com taglib.

Meu código é este:

<display:table name="${idiomas}" export="false" pagesize="15"  defaultsort="1" requestURI="listarIdioma.do" class="tabela_display medio" uid="idioma">
    <display:column property="idioma" title="Idioma" class="tabela_display" style="width: 200px;"/>
    <display:column title="Alterar" class="tabela_display" href="carregarIdioma.do" paramId="idioma.id" paramProperty="id">
    <img src="icones/editar.png" border="0"/></display:column>
    <display:column title="Excluir" class="tabela_display" ><a onClick="confirmBoxLista('${idioma.id}')" style="cursor: pointer">
    <img src="icones/deletar.png" width="24" height="24" border="0"/></a></display:column>
</display:table>

2 Respostas

A

Brow! Também estou com esse problema. Se encontrar algo me avisa blz?!

M

Tipo eu fiz isso em uma aplicação aqui. Primeiro têm que criar um filtro, depois criei uma classe util para extrair o numero da pagina, ordenação. O atributo setado na sessão você utiliza nos links que voltam para sua página.

public class DisplayTagPageTrackingFilter implements Filter {


	// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	// * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
	// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	public void doFilter(ServletRequest req, ServletResponse resp,	FilterChain chain) throws IOException, ServletException {
		
        HttpServletRequest request = (HttpServletRequest) req;
        if ("GET".equals(request.getMethod()) && (null != request.getQueryString() &&  request.getQueryString().length()&gt;0)) {                  
            String dsAaction = request.getRequestURI();
            dsAaction = StringUtils.substringAfterLast(dsAaction, "/");
            dsAaction = StringUtils.substringBeforeLast(dsAaction,".");
            final String queryString = request.getQueryString();      
            final String pageQueryString = DisplayTagUtil.extractPageNameAndValue(queryString);
            if (pageQueryString != null){
                request.getSession().setAttribute(dsAaction + "_displaytag_pages",pageQueryString);         
            }
        }
        chain.doFilter(req, resp);		
		
	}
	
	// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	// * @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
	// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	public void init(FilterConfig arg0) throws ServletException {
		//
	}
	
	// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	// * @see javax.servlet.Filter#destroy()
	// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	public void destroy() {
		//
	}
}
public class DisplayTagUtil {

    private static Pattern extractPagePattern = Pattern.compile("(?sim)(d-\\d+-p=\\d+)");
    private static Pattern extractSortPattern = Pattern.compile("(?sim)(d-\\d+-s=\\d+)");
    private static Pattern extractOrderPattern = Pattern.compile("(?sim)(d-\\d+-o=\\d+)");

    public static String extractPageNameAndValue(String queryString) {
        if (null == queryString) {
            return null;
        }
        
        StringBuilder ret = new StringBuilder();

        extractPagePattern(ret, queryString);
        extractSortPattern(ret, queryString);
        extractOrderPattern(ret, queryString);
        
        if(ret.length() &gt; 0){
            return ret.toString();
        }
        
        return null;
    }	
    
    public static StringBuilder extractPagePattern(StringBuilder ret, String queryString){
    	
    	Matcher m = extractPagePattern.matcher(queryString);
    	int i=0;
        for (;m.find();i++) {
            //if (i &gt; 0) {
                ret.append("&");
            //}
            ret.append(m.group());
        }
        if (i==0) {
            return null;
        }
        return ret;
        
    }
    
    public static StringBuilder extractSortPattern(StringBuilder ret, String queryString){
    	
    	Matcher sort = extractSortPattern.matcher(queryString);
    	int i=0;
        for (;sort.find();i++) {
            //if (i &gt; 0) {
                ret.append("&");
            //}
            ret.append(sort.group());
        }
        if (i==0) {
            return null;
        }
        return ret;
        
    }   
    
    public static StringBuilder extractOrderPattern(StringBuilder ret, String queryString){
    	
    	Matcher order = extractOrderPattern.matcher(queryString);
    	int i=0;
        for (;order.find();i++) {
            //if (i &gt; 0) {
                ret.append("&");
            //}
            ret.append(order.group());
        }
        if (i==0) {
            return null;
        }        
        return ret;
        
    }    
	
}
&lt;html:image srcKey="img.botao.salvar"  onclick="action='manterCerca.do?metodo=incluir${manterCerca_displaytag_pages}'"/&gt;
Criado 10 de março de 2009
Ultima resposta 12 de mar. de 2009
Respostas 2
Participantes 3