[Logo] Neo Framework Forum
  [Search] Busca   [Recent Topics] Tópicos Recentes   [Members]  Lista de Usuários   [Groups] De volta para a página principal 
[Register] Registrar / 
[Login] Entrar 
Problemas com filtragem na versão 3.4  XML
Índice dos Fóruns -> Bugs
Autor Mensagem
andre
Equipe

Membro desde: 26/11/2007 13:44:01
Mensagens: 27
Offline

Bom dia pessoal,

Tentei migrar meus aplicativos para a versão 3.4, porém, meus filtros pararam de funcionar.

Dei uma debugada no código e receio que o problema esteja neste trecho abaixo, da classe CrudController.

Code:
	
 protected void setListagemInfo(WebRequestContext request, FILTRO filtro) throws Exception {
     if (!listagemVaziaPrimeiraVez() || filtro.isNotFirstTime()) {
         if(request.getParameter("resetCurrentPage") != null) {
                 String orderBy = filtro.getOrderBy();
                 boolean asc = filtro.isAsc();
 				
                 filtro = (FILTRO) filtro.getClass().newInstance();
 				
                 filtro.setOrderBy(orderBy);
                 filtro.setAsc(asc);
     }
 


Neste momento, o sistema está criando um novo filtro, apagando o estado do antigo filtro e preservando apenas os atributos OrderBy e Asc.

Fiz as seguintes alterações e funcionou

Code:
 if(request.getParameter("resetCurrentPage") != null) {
         filtro.setCurrentPage(0);
         filtro.setNotFirstTime(true);
         filtro.setNumberOfPages(1);
         filtro.setNumberOfResults(0);
 }
 


Posso manter essas alterções ou é melhor fazer de outra forma?

Grato!
pedro.goncalves
Equipe
[Avatar]
Membro desde: 17/04/2007 16:12:20
Mensagens: 539
Localização: Belo Horizonte - MG
Offline

Qual erro que está dando?

Pedro Gonçalves
http://pedrogoncalves.com.br
[Email] [WWW] [MSN]
andre
Equipe

Membro desde: 26/11/2007 13:44:01
Mensagens: 27
Offline

Não dá erro, só não acontece nada. Parece que o neo executa uma query sem filtro, listando todos os objetos denovo, como se fosse a primeira vez que entra na tela.
pedro.goncalves
Equipe
[Avatar]
Membro desde: 17/04/2007 16:12:20
Mensagens: 539
Localização: Belo Horizonte - MG
Offline

Mas isso acontece sempre?

Pedro Gonçalves
http://pedrogoncalves.com.br
[Email] [WWW] [MSN]
andre
Equipe

Membro desde: 26/11/2007 13:44:01
Mensagens: 27
Offline

Sim. Pode ser pq eu estou usando o WebSphere, ele é cheio de bugs. Tive que mudar a jsp TabelaResultadosTag, pq o websphere não aceita duas chamadas consecutivas de funções em uma pagina jsp. Só pepino.

Mas com aquele código eu resolvi o problema. Valew!

pedro.goncalves
Equipe
[Avatar]
Membro desde: 17/04/2007 16:12:20
Mensagens: 539
Localização: Belo Horizonte - MG
Offline

O andré, o Neo tem que funcionar em qualquer servidor de aplicação. Teria como constatar se o problema é relmente no servidor de aplicação?

Obrigado.

Pedro Gonçalves
http://pedrogoncalves.com.br
[Email] [WWW] [MSN]
andre
Equipe

Membro desde: 26/11/2007 13:44:01
Mensagens: 27
Offline

Eu encontrei alguns bugs do websphere referente a chamadas de funções em páginas jsp. Por exemplo, algumas funções jstl não funcionavam em versões anteriores. Encontrei vários hotfixes para esses bugs.

Na página tabelaResultadosTag existe o seguinte código

Code:
 <script language="javascript">
 imprimirSelecionar(new Array(${n:hierarchy(TtabelaResultados.valueType)}), "${n:escape(n:valueToString(n:reevaluate(TtabelaResultados.name, pageContext)))}", "${n:escape(n:descriptionToString(n:reevaluate(TtabelaResultados.name, pageContext)))}");
 </script>
 


O websphere não consegue executar essa sequência de chamadas de funções e dispara uma exceção dizendo que não encontrou a função n:descriptionToString(). Quando eu coloco essa função pra executar antes da chamada, a sequencia funciona

Code:
 <script language="javascript">${n:descriptionToString(null)}
 imprimirSelecionar(new Array(${n:hierarchy(TtabelaResultados.valueType)}), "${n:escape(n:valueToString(n:reevaluate(TtabelaResultados.name, pageContext)))}", "${n:escape(n:descriptionToString(n:reevaluate(TtabelaResultados.name, pageContext)))}");
 </script>
 
pedro.goncalves
Equipe
[Avatar]
Membro desde: 17/04/2007 16:12:20
Mensagens: 539
Localização: Belo Horizonte - MG
Offline

Eu não percebi a diferença entre os 2 códigos..

Até!

Pedro Gonçalves
http://pedrogoncalves.com.br
[Email] [WWW] [MSN]
andre
Equipe

Membro desde: 26/11/2007 13:44:01
Mensagens: 27
Offline

No segundo código eu adicionei uma chamada à função ${n:descriptionToString(null)} após a tag javascript. Se tirar essa chamada, a página não funciona no websphere.

Parece que ele precisa armazenar a função em algum cache, antes de executar as funções aninhadas, do contrário, ele dispara uma excessão dizendo que não pode localizar a função.
rogel.garcia
Xiita

Membro desde: 17/04/2007 16:35:03
Mensagens: 275
Offline

Realmente existe um erro na versão 3.4

o seguinte código:
Code:
 if(request.getParameter("resetCurrentPage") != null) {
     String orderBy = filtro.getOrderBy();
     boolean asc = filtro.isAsc();
 				
     filtro = (FILTRO) filtro.getClass().newInstance();
 				
     filtro.setOrderBy(orderBy);
     filtro.setAsc(asc);
 }
 


Faz com que o filtro seja resetado a cada vez que é feito um submit da página. Já que o resetCurrentPage é enviado como true como definido em TabelaFiltroTag.jsp

O código deveria ser como o código enviado pelo André.

Muito bem observado André. Obrigado pela contribuição.
andre
Equipe

Membro desde: 26/11/2007 13:44:01
Mensagens: 27
Offline

Ficou satisfeito em contribuir para o framework, que ultimamente tenho usado como referência em todos os meus projetos e estou indicando para muitos amigos.

Parabéns pelo trabalho e sucesso.
pedro.goncalves
Equipe
[Avatar]
Membro desde: 17/04/2007 16:12:20
Mensagens: 539
Localização: Belo Horizonte - MG
Offline

Que bom andré!

Qualquer coisa só mandar mensagem aqui! =p

Pedro Gonçalves
http://pedrogoncalves.com.br
[Email] [WWW] [MSN]
 
Índice dos Fóruns -> Bugs
Ir para:   
Powered by JForum 2.1.7 © JForum Team