Ícones Legais para seu sistema ou site

Sabe aquele ícone que você tanto deseja estar no seu site ou sistema, pra dar um up nele, deixar ele charmoso, com um alto grau de garbo e elegância?
Aquele mesmo que você tenta fazer no paint e o resultado final mais parece um desenho de uma criança de 2 anos com um giz de cera na mão, ou com um pouco com sorte fica parecendo o Mário(Aquele encanador baixinho bigodudo mesmo) só que com mais serrilhados do que Crysis 3 rodando em um K6-2 com 512 mb de memoria.
Não se preocupe mais meu amigo, existe um site que contém uma gama enorme de ícones para todos os gosto, e o melhor, GRÁTIS.
O IconArchive conta com um acervo enorme de ícones, todos categorizados e de fácil consulta, o único problema(não tão grande assim) é que as consultas devem ser em inglês, mas para nós que trabalhos com T.I. não será um grande empecilho, porém para aqueles que não sabem fazer um O com um copo no inglês, nada que um bom e velho google translate resolva.

Devem existir outros sites com bons conteúdos também, mas este foi o único que sempre que precisei me ajudou e espero que ajudem vocês também, abraços!

link: http://www.iconarchive.com/

Jforum para todos os gostos

O Jforum para quem não conhece, é um projeto Open Source de um dos fóruns de discussões baseado em JAVA, que eu me atrevo a dizer, dos mais famosos do planeta, no qual se integra com os principais bancos de dados do mercado.
Para se ter uma ideia, o maior fórum de Java, o GUJ, é baseado no Jforum, logicamente que por ser Open Source, o GUJ possui uma versão melhorada e especifica para sua comunidade.

E por que estou falando disto? Um amigo me procurou essa semana e me propôs que eu fizesse um site para divulgar seu produto e além disto ele gostaria que tivesse um pequeno fórum de discussões fechado para os integrantes desta empresa.
Como já tinha trabalhando com Jforum algum tempo atrás para um cliente, mas sem me aprofundar muito, pois acabou que o projeto foi deixado de lado, sugeri a ele esta solução para o fórum dele, pois como seria uma comunidade simples apenas entre os integrantes da empresa, não precisaria de muitas customizações e o projeto principal daria conta do recado.
Então resolvi tirar o projeto Jforum do fundo do baú e voltar a colocar para funcionar. A instalação é bem simples e funcional, você não encontrará problemas ao executar, no próprio site da comunidade tem um passo a passo de como realizar esta instalação (http://jforum.net/install.jsp), bastando apenas ter um container JAVA, no meu caso eu utilizei o Apache Tomcat6 e o banco de dados PostgreSQL 9.3.
Ao finalizar a instalação ele lhe redireciona para a página principal do fórum e tudo começa a funcionar maravilhosamente bem, porém ao clicar no primeiro tópico que ele cria automaticamente um erro é apresentado

java.sql.SQLException: ERROR: operator doesn't exist : character varying = integer

Pela exceção, vemos claramente que se trata de alguma query do sistema onde está se comparando campo string com integer. Depois de vasculhar o fórum javaranch(http://www.coderanch.com/forums/f-114/jforum), encontrei a solução sem precisar baixar o código fonte do projeto, pois o Jforum lê estas querys diretamente de um arquivo chamado generic_queries.sql que fica localizado na pasta WEB-INF/config/database/generic/. Veja que maravilha, se estas querys ficassem diretamente no código fonte do projeto eu teria que baixar, ajustar e gerar uma nova versão do Jforum, porém apenas tive que mexer na seguinte linha do arquivo:

AND rv.role_value = ?

Ao consultar o banco de dados verifiquei que este campo role_value trata-se de um campo character varying e dentro das classes do Jforum o parâmetro para comparação da clausula where é integer, acredito que nas versões anteriores do JAVA ele fazia essa conversão automaticamente, porém muito me admira não terem soltado algum patch de atualização para este problema. Enfim, para corrigir basta converter o parâmetro para text, ficando da seguinte maneira:

AND rv.role_value = ?::text

Quando achei que tinha terminado, encontrei outro problema ao tentar acessar o painel do administrador, o seguinte erro era apresentado:

by: net.jforum.exceptions.DatabaseException: java.sql.SQLException: ERROR: operator does not exist: timestamp without time zone > integer 
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse 

E mais uma vez é nítido que esta exceção está vinculada a um erro de query, mais uma vez ao consultar o javaranch(http://www.coderanch.com/forums/f-114/jforum), verifiquei que uma condição que não era mais aceita nas novas verões do postgreSQL estava sendo utilizada.
Para ajustar basta apenas abrir novamente o arquivo generic_queries.sql e alterar as seguintes query:

ForumModel.statsFirstPostTime = SELECT MIN(post_time) FROM jforum_posts WHERE post_time > 0

ForumModel.statsFirstRegisteredUserTime = SELECT MIN(user_regdate) FROM jforum_users WHERE user_regdate > 0

PARA

ForumModel.statsFirstPostTime = SELECT MIN(post_time) FROM jforum_posts WHERE extract('day' from post_time) > 0
ForumModel.statsFirstRegisteredUserTime = SELECT MIN(user_regdate) FROM jforum_users WHERE extract('day' from user_regdate) > 0

Pronto seu painel de administrado vai funcionar normalmente. Após isso fiz mais alguns testes e não encontrei problemas, caso você tenha encontrado mais algum e ajustou compartilhe aqui conosco.
Há!, Mais uma coisa, Você vai perceber que algumas imagens não estão aparecendo no seu fórum, como a de criação de um novo tópico. Para que elas apareçam você deve renomear a pasta es_US da pasta images para pt_BR.
Abraços!

Colocando Nexus 4 pra funcionar com Android Studio

Por esses dias estava com um problema para depurar um pequeno aplicativo que estava desenvolvendo para Android, plugava meu smartphone nexus 4 no USB, porém quando clicava no botão para depurar o aplicativo, não aparecia a opção de escolher meu nexus, apenas o emulador.

Fiz algumas pesquisas e descobrir que existi um drive genérico do Google que auxilia na comunicação entre a IDE e o smartphone.
Pois bem, segui o tutorial e consegui resolver o problema, basta apenas baixar o Google USB Driver pelo SDK Manager, depois ir no gerenciador de dispositivos do seu computador e mandar atualizar com o arquivo que foi baixado pelo SDK Manager.

O arquivo vai ficar na pasta android-studio\sdk\extras\google\usb_driver. Basta apenas apontar para esta pasta que o windows se encarrega de atualizar o driver.
Depois disto basta apenas reiniciar o Android Studio.

Segue o link do tutorial, espero que te ajude também

Getting Google Nexus 4 to work on Windows 7

Problema ao iniciar tomcat7 via modo debug

Fala pessoal da terra média, anteriormente eu tinha criado um post sobre como inciar o tomcat6 em modo debug, pois bem, recentemente aqui na empresa mudamos do tomcat6 para o tomcat7 e para minha surpresa ao tentar iniciá-lo no modo debug um erro de falta de classe era apresentado. Para ser mais especifico, este erro abaixo:

erro_tomcat

Após algumas pesquisas, descobrir que na nova versão do Bootstrap, especificamente no arquivo MANIFEST.MF não chama a lib tomcat-juli.jar no seu classpath.

Então, para resolver, basta apenas abrir a lib bootstrap.jar com algum descompactador(Winzip ou Winrar) que fica dentro da pasta bin do seu tomcat e alterar a linha Class-Path: commons-daemon.jar para Class-Path: commons-daemon.jar tomcat-juli.jar.

Agora basta inciar o tomcat e voltar a debugar seus projetos ;P

fonte: http://stackoverflow.com/questions/6750825/unable-to-start-tomcat-server-in-netbeans-and-eclipse

Executar comando linux no java

As vezes temos que executar algum comando linux antes de realizar alguma tarefa no java, por exemplo, gerar uma planilha com informações do servidor linux para depois recuperar esse arquivo e jogar no banco de dados.
Para executar um comando linux no java basta apenas chamar o método exec da classe Runtime.

Um exemplo prático seria:

         Runtime run = Runtime.getRuntime();
        String comando = "";
        
        comando = "wkhtmltoimage --crop-w "+context.get("tmp.ds_corte_width")+" \""+context.get("tmp.ds_servidor")+"\""+context.get("tmp.id_exploracao_pecuaria").concat(".png");
        try {
            run.exec(comando);
        } catch (IOException ex) {
            context.put("tmp.resposta", "Erro ao gerar imagem: "+ex.getMessage());
            ex.printStackTrace();
        } 

Neste exemplo eu executo um programa chamado wkhtmltoimage que pega uma url e transforma o html em imagem, posteriormente pretendo falar mais dele.

Até.

Fonte:http://www.vivaolinux.com.br/dica/Executar-comandos-do-terminal-Linux-em-Java

Hora de aprender WI

Galera, tentei encontrar algum material de curso sobre WI e não tive sucesso.

Porém, existe um fórum especifico, voltado para este framework. Lá você vai poder encontrar material para estudo e muita gente disposta a ajudar.

No fórum existe um cara chamado Luciano Borges que está sempre abrindo cursos para interessados em aprender a ferramente a um preço acessível.

Para se cadastrar basta acessar o site do Portal do Software Público: http://www.softwarepublico.gov.br/

Após se cadastrar você terá acesso aos materiais que estão disponíveis hoje e ofertas de cursos.

Abaixo segue a oferta atual de curso oferecido por Luciano:

————-
Prezados,
Em virtude da crescente demanda pelo WebIntegrator aliado ao trabalho de divulgação e promoção do WI, venho lançar um pacote de treinamentos que permitirá às pessoas conhecerem melhor a ferramenta e poderem tirar proveito mesma. Segue programação:

Curso Intensivo de WebIntegrator – aula noturna durante a semana
Carga Horária: 12h
Datas: 02 a 06 de Setembro
Horário: 19:30h ás 22:00h
Investimento: R$ 120,00
Vagas: 9 alunos
Conteúdo: Introdução ao WI (explanação geral da interface do builder), controles nativos do WI (login, logs), componentes de projeto (combo, grid simples, grid múltiplo, download (bd e local), upload (bd e local) e WiEvent), páginas (componentes de pré-página e pós-página [objeto, lista, update normal, update múltiplo, desvios, envio de e-mail e treeview]), wizard de página e criação de componentes do wizard.

Curso Intensivo de WebIntegrator – aula aos sábados
Carga Horária: 12h
Datas: 14 e 21 de Setembro
Horário: 9:00h ás 12:00h / 13:30h ás 16:30h
Investimento: R$ 120,00
Vagas: 9 alunos
Conteúdo: Introdução ao WI (explanação geral da interface do builder), controles nativos do WI (login, logs), componentes de projeto (combo, grid simples, grid múltiplo, download (bd e local), upload (bd e local) e WiEvent), páginas (componentes de pré-página e pós-página [objeto, lista, update normal, update múltiplo, desvios, envio de e-mail e treeview]), wizard de página e criação de componentes do wizard.

Estendendo o WI com Conectores Java
Carga Horária: 3h
Data: 07 de Setembro
Horário: 09h ás 12h
Investimento: R$ 50,00
Vagas: 9 alunos
Conteúdo: Configurar o Eclipse para trabalhar com WebIntegrator, explicar e demonstrar como criar um conector Java.

Usando JQuery em projeto WI
Carga Horária: 12h
Data: 09 a 13 de Setembro
Horário: 09h ás 12h
Investimento: R$ 50,00
Vagas: 9 alunos
Conteúdo: Funcionamento do JQuery, Busca de Elementos (Seletores), Modificação do DOM, Bind com eventos e principais eventos, Ajax e JQueryUI. Tudo isso em projetos feitos em WI.

Mentoring em WI
Carga Horária: A combinar
Data: A combinar
Horário: A combinar
Investimento: R$ 100,00/hora
Conteúdo: A critério do cliente, podendo ser a solução de um problema real ou exemplificando alguns pontos avançado do WI.
Os cursos serão realizados em um ambiente de treinamentos on-line (TreinaTom), uma sala de aula virtual com diversos recursos que permitem interatividade entre várias pessoas, compartilhando informações de forma rápida e eficiente, proporcionando uma nova experiência de ensino a distância sem a necessidade de instalações ou configurações, permitindo assim, um curso on-line de forma dinâmica, interativa e segura, utilizando-se de recursos multimídias como áudio e vídeo entre outros.
O pagamento poderá ser feito via depósito bancário.
Os interessados em realizar o(s) curso(s), favor enviar um e-mail para lucianosantosborges@gmail.com informando o(s) curso(s) pretendido(s).

——-
Pra você que esta pensando em se profissionalizar em WI essa é uma boa oportunidade.

Atribuir mais de uma variável no mesmo SQL – PL/pgSQL

Por esses dias precisei criar uma função no Postgres, e em determinada parte precisei popular duas variáveis de uma mesma query. Porém, não queria executar esta mesma query duas vezes para popular minhas variáveis.

Usualmente seria:

CREATE OR REPLACE FUNCTION funcao(codigo integer)
RETURNS SETOF character varying AS
$BODY$
DECLARE
variavel int;
variavel2 int;
BEGIN

--ATRIBUINDO A VARIÁVEL 1
select into variavel campo_tabela from tabela where campo = codigo;

--ATRIBUINDO A VARIÁVEL 2
select into variavel2 campo_tabela2 from tabela where campo = codigo;

END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100
ROWS 1000;
ALTER FUNCTION funcao(integer)
OWNER TO postgres;

Para popular várias de uma só vez, basta trazer as variáveis e em seguida na mesma ordem os campos das tabelas:

...
select into variavel, variavel2
campo_tabela, campo_tabela2
from tabela
where campo = codigo;
...

Até…

Debug Remoto em Aplicação Web no NetBeans

Eu que desenvolvo aplicações web com o WI, sei como é difícil criar conectores e tentar achar os bugs no erro e acerto, utilizando System.out em todo o processo.
Uma vez estava cansando disso e resolvi achar uma maneira melhor de achar esses bugs. Uma forma rápida e fácil é utilizar o modo debug do NetBeans, porém não conseguia integrá-lo com o meu tomcat.
Após algumas pesquisa consegui achar uma solução que compartilho com vocês agora, não lembro em que site foi que achei, pois faz muito tempo.

Vamos la!!!

Crie um arquivo .bat(será por ele que vamos iniciar nosso tomcat), pode ser satartup_tomcat.bat

Abra o arquivo e cole esse código

@echo off

cd C:\Program Files\Java\jre1.6.0_06\bin\

call java.exe  -jar -Djavax.net.debug=all -Xdebug -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=7001 -Duser.dir="C:\Tomcat6" -Djava.endorsed.dirs="C:\Tomcat6\common\endorsed" "C:\tomcat6\bin\bootstrap.jar" start

:end

Agora substitua os caminhos do JRE e tomcat por da sua máquina.

Agora execute o .bat que foi criado, espere inciar.

Abra o NetBeans, vá no menu Depurar e clique em Anexar Depurador, em porta coloque 7001, em host coloque localhost ou seu ip, em timeout coloque 6000, agora clique em OK e seja feliz, agora todo conector que for executado o debug será ativado.

Criando uma Grid Java no WI

Saudações queridos amigos da terra média… digo, do planeta terra :). Atendo a pedidos, farei um passo a passo de como utilizar a opção Grid Java no WI. A Grid java é muito útil quando queremos realizar alguma lógica que não é possível resolver com SQL, ou montar registros que venham de algum arquivo ou WebService.
O exemplo que mostrarei abaixo é com uma grid sendo montada com registros fixos, que a partir dele pode ser substituido por registros vindo do banco, arquivos ou webservices.

Para construir este exemplo vou utilizar o último projeto que criamos, chamado projeto_objeto e o projeto de classes chamado ProjetoConector.

Primeiro passo, vamos separar nossa classe que será uma grid das outras classes que já existem. Crie o pacote br.com.projetoteste.grids e dentro do pacote crie a classe ExemploGridJava(Ta vendo Rodrigo, seguindo o CodeConvetions do Java ;p ). Seu projeto deverá ficar da seguinte maneira:

1

Para que o WI reconheça que esta classe será uma grid é necessário estender as seguintes interfaces na classe: InterfaceGrid, InterfaceParameters. Mais uma vez a interface InterfaceParameters é implementada, como vimos no post anterior ela serve para ler e exporta variáveis da página.

Após estender estas interfaces será necessário implementar os métodos abstratos dela, basta clicar no ícone de sugestão e importar os métodos, os métodos importados são:

execute – Espera um MAP[] que serão os registros que a grid espera.

getOutputParameters – Campo(s) de saída, que pode ser utilizado para jogar alguma variável de resposta da classe na página. Em caso de erro por exemplo é possível setar o erro nessa variável.

GetInputParameters – Campo(s) de entrada, serve de filtro para a consulta que montará a grid.

Seu código deve ficar da seguinte maneira:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.projetoteste.grids;

import br.com.itx.exception.UserException;
import br.com.itx.integration.DatabaseAliases;
import br.com.itx.integration.InterfaceGrid;
import br.com.itx.integration.InterfaceParameters;
import br.com.itx.integration.JavaParameter;
import br.com.itx.util.WIMap;
import java.util.Map;

/**
 *
 * @author Santana
 */
public class ExemploGridJava implements InterfaceGrid, InterfaceParameters{

    @Override
    public Map[] execute(WIMap wimap, DatabaseAliases da) throws UserException {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public int returnType() {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public JavaParameter[] getInputParameters() {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public JavaParameter[] getOutputParameters() {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
    
}

Agora vamos colocar a mão na massa. Para este exemplo vamos utilizar nosso bean frutas populando com alguns registros para fazer a montagem da grid, ficando como o código abaixo:

    @Override
    public Map[] execute(WIMap wimap, DatabaseAliases da) throws UserException {
        
        fruta f1 = new fruta();
        f1.setDs_nome("MANGA");
        f1.setNr_peso(13.0);
        f1.setNr_preco(5.55);
        
        fruta f2 = new fruta();
        f2.setDs_nome("CAJU");
        f2.setNr_peso(12.0);
        f2.setNr_preco(3.55);
        
        
        fruta f3 = new fruta();
        f3.setDs_nome("LARANJA");
        f3.setNr_peso(5.0);
        f3.setNr_preco(3.40);
        
        
        List<fruta> lf = new ArrayList<fruta>();
        
        lf.add(f1);
        lf.add(f2);
        lf.add(f3);
         
        return null;
    }

Agora vamos criar um método chamado getMapFruta que espera um objeto fruta e retorna um map, popula nossas variáveis da grid, como no exemplo abaixo:

  public Map getMapGta(fruta d) {
        Map map = new HashMap();
        map.put("tmp.ds_nome", d.getDs_nome());
        map.put("tmp.nr_peso", String.valueOf(d.getNr_peso()));
        map.put("tmp.nr_preco", String.valueOf(d.getNr_preco()));
        return map;
    }

Um detalhe neste código é que todas as variáveis devem ser String, por algum motivo que não sei explicar, é que se for exportado uma variável que não seja String é mostrado o nome Object na página. Neste caso devemos da um parse em todas as variáveis que não sejam do tipo String.

Feito isto basta apenas criar uma variável do tipo Map[] do tamanho do nosso list no método execute da nossa classe e incluir nosso método getMapFruta que trata os campos do objeto fruta. Código abaixo:

  Map[] map = new Map[lf.size()];
  for (int i = 0; i < lf.size(); i++) {
       map[i] = getMapFruta(lf.get(i));
   }
        
   return map;

Código completo da classe:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.projetoteste.grids;

import br.com.itx.exception.UserException;
import br.com.itx.integration.DatabaseAliases;
import br.com.itx.integration.InterfaceGrid;
import br.com.itx.integration.InterfaceParameters;
import br.com.itx.integration.JavaParameter;
import br.com.itx.util.WIMap;
import br.com.projetoteste.fruta;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

/**
 *
 * @author Santana
 */
public class ExemploGridJava implements InterfaceGrid, InterfaceParameters {

    @Override
    public Map[] execute(WIMap wimap, DatabaseAliases da) throws UserException {

        fruta f1 = new fruta();
        f1.setDs_nome("MANGA");
        f1.setNr_peso(13.0);
        f1.setNr_preco(5.55);

        fruta f2 = new fruta();
        f2.setDs_nome("CAJU");
        f2.setNr_peso(12.0);
        f2.setNr_preco(3.55);


        fruta f3 = new fruta();
        f3.setDs_nome("LARANJA");
        f3.setNr_peso(5.0);
        f3.setNr_preco(3.40);


        List<fruta> lf = new ArrayList<fruta>();

        lf.add(f1);
        lf.add(f2);
        lf.add(f3);

        Map[] map = new Map[lf.size()];
        for (int i = 0; i < lf.size(); i++) {
            map[i] = getMapFruta(lf.get(i));
        }
        
        return map;
    }

    public Map getMapFruta(fruta d) {
        Map map = new HashMap();
        map.put("tmp.ds_nome", d.getDs_nome());
        map.put("tmp.nr_peso", String.valueOf(d.getNr_peso()));
        map.put("tmp.nr_preco", String.valueOf(d.getNr_preco()));
        return map;
    }

    @Override
    public int returnType() {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public JavaParameter[] getInputParameters() {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public JavaParameter[] getOutputParameters() {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
}

Pronto, finalizamos nossa classe, agora basta compilar nosso projeto e jogar no nosso projeto web na seguinte pasta: tomcat6/webapps/projeto_objeto/WEB-INF/classes.
Deve ficar na seguinte disposição:

2

Agora abra o WI, e vá na sessão de grids, lá você vai encontrar 3 opções de grid, grid sql, grid html e grid xml out. Clique em grid html

Em identificador coloque exemplogridjava, em tipo coloque JAVA, em início da linha, deixe como está e clique em gravar. Deverá ficar da seguinte maneira:

3

Após clicar em gravar, ele monta um layout padrão para nossa grid, para ver isto clique em modelo.
Deverá estar da seguinte maneira:

<html>
<body>
<table border="1" cellspacing="0">
  <tr>
    <td align="center"><b>JAVA</b></td>
  </tr>
  <tr>
    <td>|coluna|&nbsp;</td>
  </tr>
  <tr>
    <td colspan="10">
      <p align="center">Empty</p>
    </td>
  </tr>
</table>
</body>
</html>

No nome Java coloque os nomes dos nossos campos, ou seja, Nome da Fruta, Peso, Valor e mais em embaixo no campo coluna, vamos colocar nossas variáveis, ou seja, tmp.ds_nome, tmp.nr_peso, tmp.nr_preco e no lugar do nome Empty, substitua por Nenhum registro encontrado e clique em gravar. Deverá ficar da seguinte maneira.

<html>
<body>
<table border="1" cellspacing="0">
  <tr>
    <td align="center"><b>Nome da Fruta</b></td>
    <td align="center"><b>Peso</b></td>
    <td align="center"><b>Valor</b></td>
  </tr>
  <tr>
    <td>|tmp.ds_nome|&nbsp;</td>
    <td>|tmp.nr_peso|&nbsp;</td>
    <td>|tmp.nr_preco|&nbsp;</td>
  </tr>
  <tr>
    <td colspan="10">
      <p align="center">Nenhum registro encontrado</p>
    </td>
  </tr>
</table>
</body>
</html>

Após isto crie uma página de teste com o nome exemplogridjava. No pré-pagina existe uma opção grid java, clique nela. No campo nome da classe, coloque o caminho e nome complete da nossa classe que criamos, seria br.com.projetoteste.grids.ExemploGridJava e no campo Grid, selecione a grid que criamos no passo anterior. Deverá ficar da seguinte maneira:

4

Clique em editar html e coloque a chamada da nossa grid e clique em gravar, ficando da seguinte maneira:

5

Agora basta clicar em vizualizar:

6

Então é isso, fica aqui mais um tutorial para o pessoal que tinha dúvida de como implementar uma grid java. Grid Java pode salvar você quando fica impossível realizar lógicas ninjas com querys ou consumir algum webservice. Espero que tenha ajudado e abraços a todos.