quarta-feira, 12 de janeiro de 2011

Como fazer uma tabela displaytags não ser exibida quando a página é carregada

Tags: JSP - Struts 2 - AJAX - struts-dojo-tags

Considerando que você tenha uma tela com campos de filtragem, uma tabela (usando displaytags e AJAX) com os resultados da busca e essa busca seja relacionada a uma tabela com muitos registros.

Quando a tela for acessada, como nenhum filtro foi especificado, todos os registros da base de dados vão ser mostrados na tabela e isso pode demorar muito.

Para evitar esse problema você pode mostrar a tabela vazia e deixar parar mostrar os resultados somente depois que o botão de Busca seja acionado.

Na verdade a solução deste problema não está no diplaytags, mas sim na tag "div" do struts-dojo-tags onde a tabela é apresentada.

A tag fica assim:


<sx:div showLoadingText="true" 
        id="gridDivId" 
        href="seusistema/SuaAction" 
        theme="ajax"
        listenTopics="show_grid" 
        formId="frm_demo" 
        executeScripts="true" 
        preload="false">
   Preencha os campos do filtro e depois clique no botão Buscar 
</sx:div>    


O pulo do gato aqui é a propriedade "preload", que tem o valor default true. Quando ela é true, ela aciona imediatamente a ajax linkado com a tabela displaytags que realiza a busca.

O texto dentro da tag div será apresentado no lugar reservado à tabela quando a tela for acessada.

Referência:
[1] http://struts.apache.org/2.0.14/docs/dojo-div.html

Nenhum comentário:

Postar um comentário