Arquivo

Arquivo do Autor

Next 3.5.3 Disponível

28 de Janeiro, 2012 Rógel Garcia Nenhum comentário

Foi liberada mais uma versão do Next Framework. Entre as principais novidades, componente de calendário para tipos de dados de data. APIs para sumarização e gráficos. Atualização de Javascripts. API para compilação dinâmica de códigos. Barra de progresso. Veja o release notes para mais informações. O next 3.5.3 pode ser baixado na seção de downloads.

Update http://www.nextframework.org/download/next-3.5.3_01.jar

Categorias: Downloads Tags: ,

Versão 3.5.2

12 de Julho, 2011 Rógel Garcia 2 comentários

Liberada a versão 3.5.2 do framework. Verifique no arquivo de Release Notes as mudanças. Baixe na seção de downloads.

Categorias: Geral Tags:

3.5.1 Build 20110420

20 de Abril, 2011 Rógel Garcia Nenhum comentário

Disponibilizado uma versão intermediária do Next. Esse é um nightly build, mas já foi utilizado em alguns projetos com sucesso.

Download JAR next-3.5.1-build20110420.jar
Download Source next-3.5.1-build-20110420-src.zip
Release Notes

Essa versão não foi disponibilizada na seção de downloads pois é um nightly build.
Será necessário fazer o download do arquivo 3.5.1-Full na seção de downloads.
Para utilizar essa versão substitua o JAR do Next, pelo JAR dessa versão.
(Se ao fazer o download, a extensão do arquivo vier como .zip, basta renomear para .jar)

Categorias: Geral Tags:

Novo Tutorial Disponível

19 de Outubro, 2010 Rógel Garcia Nenhum comentário

Um novo tutorial sobre AJAX está disponível na área de Tutoriais. AJAX utilizando a tag a:call

Categorias: Geral Tags:

AJAX utilizando a tag a:call

19 de Outubro, 2010 Rógel Garcia Nenhum comentário

Esse é um tutorial que demonstra algumas utilizações para a tag a:call do next. A tag a:call é uma tag que monta as funções javascript necessárias para se fazer chamadas AJAX.

Chamadas AJAX são basicamente invocações de métodos no servidor de forma assincrona, onde é possível atualizar partes da página atual ou executar operações no servidor sem a necessidadde de recarregar a página inteira. Isso economiza recursos tanto do servidor quanto do cliente, possibilitando aplicações mais ricas e ao mesmo tempo mais eficientes. É um recurso muito utilizado e dá bastante vida as páginas.

Para utilizar a tag a:call do next, é necessário que seu módulo utilize o arquivo base.jsp. Veja a documentação de referência para mais informações sobre o base.jsp. Capítulo 6 – MVC.

O primeiro passo para utilizar a tag, é importar a tag lib de ajax. Para isso, adicione no seu JSP o seguinte import.

<%@ taglib prefix="a" uri="ajax"%>

A taglib ajax possui apenas uma tag call. Dois atributos dessa tag são obrigatórios:

  • functionName, que é o nome da função javascript que será gerada, e que poderá ser invocada pelos seus scripts.
  • action, que é o nome da action no controller que irá receber a chamada.

A tag call possui outros 3 atributos, que são opcionais.

  • callback, que é o nome da função javascript que irá receber a resposta do servidor. Se desejar você pode escrever uma função personalizada para tratar os dados recebidos. A função de callback padrão faz um eval do conteúdo retornado.
  • parameters, que é a lista de parametros a ser passada para o servidor. Os parâmetros devem ser especificados na sintaxe de URL, ex: param1=value1&param2=value2.
  • url, que é a url do controller para onde a chamada deve ser enviada. Se não for informado o controller chamado será o mesmo que recebeu a requisição que renderizou a página.
    A seguir serão apresentados alguns exemplos de utilização da tag. A versão utilizada para testes dos exemplos é a 3.5.1.

    Exemplo 1 – Básico

     

    Nesse exemplo será mostrada a chamada mais simples de chama AJAX. Será renderizado um botão que ao ser clicado envia uma requisição ao servidor, que devolve um comando alert para o browser.

    Controller

    package controller;

    import org.nextframework.controller.Controller;
    import org.nextframework.controller.DefaultAction;
    import org.nextframework.controller.MultiActionController;
    import org.nextframework.view.ajax.View;

    @Controller(path="/modulo/ajax")
    public class AjaxController extends MultiActionController{

        /**
         * Action default.
         * Será chamada pelo browser diretamente para renderizar a página
         * @return
         */
        @DefaultAction
        public String pagina(){
            return "pagina";
        }

        public void actionAjax(){
            /*
             * A classe View possui alguns métodos para facilitar o envio de informações para o cliente.
             * Basicamente cada comando representa um print na saída do response.
             */
            View.getCurrent().alert("Conteúdo AJAX enviado pelo servidor");
        }
    }

     

    JSP (pagina.jsp)

    <%@ taglib prefix="a" uri="ajax"%>

    Essa é a página que utilizará AJAX.

    <button onclick="chamarAjax()">Clique para efetuar o AJAX</button>

    <a:call functionName="chamarAjax" action="actionAjax" />

     

    Exemplo 2 – Alterando o conteúdo do HTML

     

    No segundo exemplo iremos alterar o conteúdo de um DIV, com o conteúdo enviado pelo servidor.

    Controller

    package controller;

    import org.nextframework.controller.Controller;
    import org.nextframework.controller.DefaultAction;
    import org.nextframework.controller.MultiActionController;
    import org.nextframework.view.ajax.View;

    @Controller(path="/modulo/ajax")
    public class AjaxController extends MultiActionController{

        /**
         * Action default.
         * Será chamada pelo browser diretamente para renderizar a página
         * @return
         */
        @DefaultAction
        public String pagina(){
            return "pagina";
        }
        public void actionAjax(){
            //o eval só funcionará se a função callback do cliente for
            //a função default (ou seja, callback não especificado)
            View
                .getCurrent()
                .eval("document.getElementById(’conteudo’).innerHTML = " +
                        "’Novo conteúdo enviado pelo servidor’;")
                .eval("document.getElementById(’conteudo’).style.backgroundColor = " +
                        "’#DEDE55′;"); //é possível enviar vários comandos
        }
    }

     

    JSP (pagina.jsp)

    <%@ taglib prefix="a" uri="ajax"%>

    Essa é a página que utilizará AJAX.

    <div id="conteudo" style="border:1px solid red">
    Conteúdo que será alterado
    </div>

    <button onclick="chamarAjax()">Clique para efetuar o AJAX</button>

    <a:call functionName="chamarAjax" action="actionAjax" />

     

    Exemplo 3 – Enviando parâmetros para o servidor

     

    Nesse exemplo é mostrado como é possível passar parâmetros para o servidor.

    Controller

    package controller;

    import org.nextframework.controller.Controller;
    import org.nextframework.controller.DefaultAction;
    import org.nextframework.controller.MultiActionController;
    import org.nextframework.view.ajax.View;

    @Controller(path="/modulo/ajax")
    public class AjaxController extends MultiActionController{

        @DefaultAction
        public String pagina(){
            return "pagina";
        }
        public void actionAjax(){
            //pegamos o parametro enviado pelo cliente para montar a resposta
            String id = getParameter("id");
            View
                .getCurrent()
                .eval("document.getElementById(’"+id+"’).innerHTML = " +
                        "’Novo conteúdo enviado pelo servidor’;")
                .eval("document.getElementById(’"+id+"’).style.backgroundColor = " +
                        "’#DEDE55′;"); //é possível enviar vários comandos
        }
    }

    JSP (pagina.jsp)

    <%@ taglib prefix="a" uri="ajax"%>

    Essa é a página que utilizará AJAX.

    <div id="conteudo" style="border:1px solid red">
    Conteúdo que será alterado
    </div>

    <button onclick="chamarAjax()">Clique para efetuar o AJAX</button>

    <a:call functionName="chamarAjax" action="actionAjax" parameters="id=conteudo"/>

     

    Exemplo 4 – Parâmetros Dinâmicos

     

    É também possível montar os parâmetros dinamicamente via código javascript, para isso utilizaremos uma construção especial no atributo parameters. Antes de clicar no botão para chamar o AJAX preencha no input o valor 1, 2 ou 3.

     

    Controller

    package controller;

    import org.nextframework.controller.Controller;
    import org.nextframework.controller.DefaultAction;
    import org.nextframework.controller.MultiActionController;
    import org.nextframework.view.ajax.View;

    @Controller(path="/modulo/ajax")
    public class AjaxController extends MultiActionController{

        @DefaultAction
        public String pagina(){
            return "pagina";
        }
        public void actionAjax(){
            //pegamos o parametro enviado pelo cliente para montar a resposta
            String id = getParameter("id");
            View
                .getCurrent()
                .eval("document.getElementById(’"+id+"’).innerHTML = " +
                        "’Novo conteúdo enviado pelo servidor’;")
                .eval("document.getElementById(’"+id+"’).style.backgroundColor = " +
                        "’#DEDE55′;"); //é possível enviar vários comandos
        }
    }

     

    JSP (pagina.jsp)

    <%@ taglib prefix="a" uri="ajax"%>
    <%@ taglib prefix="n" uri="next"%>

    Essa é a página que utilizará AJAX.

    <div id="conteudo1" style="border:1px solid red;">
    Conteúdo que será alterado 1
    </div>
    <div id="conteudo2" style="border:1px solid green;">
    Conteúdo que será alterado 2
    </div>
    <div id="conteudo3" style="border:1px solid blue;">
    Conteúdo que será alterado 3
    </div>

    Digite qual conteúdo deseja alterar (1, 2 ou 3): <n:input type="integer" value="1" id="numero"/>

    <button onclick="chamarAjax()">Clique para efetuar o AJAX</button>

    <a:call functionName="chamarAjax" action="actionAjax" parameters="javascript:’id=conteudo’+document.getElementById(’numero’).value"/>

    Também é possível alterar a montagem dos parametros para delegar a uma função javascript, conforme exemplo:

    <a:call functionName="chamarAjax" action="actionAjax" parameters="javascript:montarParametros()"/>

    <script type="text/javascript">
    function montarParametros(){
        return ‘id=conteudo’ +  document.getElementById(’numero’).value;
    }
    </script>

     

    Como visto nos exemplos a chamada ajax no servidor é feita de forma bem simples. Basicamente a tag a:call monta a função javascript e você apenas chama na sua página onde for necessário. No servidor a classe View, possui alguns métodos utilitários para escrever no response.

    Categorias: Geral Tags:

    Configurar Log para o servidor Tomcat

    30 de Julho, 2010 Rógel Garcia Comentários desligado

    O servidor Tomcat, por padrão não vem com o sistema de log bem configurado. Se acontece uma exceção no sistema por exemplo, ela não é mostrada. Quando estiver utilizando o Next e como servidor o Tomcat, você poderá fazer a configuração do log através do arquivo log4j.properties esse arquivo deve ficar na raiz dos seus fontes (pasta src). Você pode usar como conteúdo desse arquivo o código abaixo, que mostrará mensagens importantes no log.

    # Set root category priority to INFO and its only appender to CONSOLE.
    log4j.rootCategory=INFO, CONSOLE

    # Set the hbm2ddl logger category to FATAL and its only appender to CONSOLE.
    log4j.logger.org.hibernate.tool.hbm2ddl=FATAL, CONSOLE

    # CONSOLE is set to be a ConsoleAppender using a PatternLayout.
    log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
    log4j.appender.CONSOLE.Threshold=INFO
    log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
    log4j.appender.CONSOLE.layout.ConversionPattern=%-4p: %c{1} %m%n

     
     


    Categorias: Geral Tags:

    Next Framework está na revista Mundo Java

    13 de Julho, 2010 Rógel Garcia 1 comentário

    Edição 42 MundoJ

    A maior revista sobre Java do país, que agora se chama MundoJ, está na edição 42 com um artigo sobre o Next Framework. O artigo está em formato de tutorial, bastante detalhado, sobre como criar uma aplicação do tipo Blog. Abrange vários assuntos, desde a criação de CRUDs, validação até upload de arquivos.

    Parabéns e obrigado a todos os usuários do Next Framework que possibilitam o crescimento e a qualidade da ferramenta.

    Categorias: Geral Tags:

    Documentação atualizada

    A documentação do Next Framework foi atualizada para refletir as mudanças da versão 3.5.1 do framework. Basta acessar a seção de documentação do site.

    Categorias: Geral Tags:

    Versão 3.5.1

    Liberada mais uma versão do framework no dia 19/05/2010. Veja o release notes da versão para saber quais foram as atualizações. Em breve a documentação será atualizada para refletir as mudanças. As principais evoluções dessa versão são:

    Leia mais…

    Categorias: Geral Tags:

    Next – A motivação para um novo framework

    4 de Março, 2010 Rógel Garcia Nenhum comentário

         No desenvolvimento de aplicações JEE, geralmente temos basicamente os seguintes artefatos: um banco de dados, classes e arquivos de templates que são os JSPs. Os banco de dados são relacionais, diferente da natureza orientada a objetos das classes que dispomos. Temos então o primeiro problema: fazer a comunicação entre os objetos e o banco de dados relacional. As classes em tempo de execução são objetos que dependem e interagem entre si. Aí está o segundo problema: satisfazer a dependência entre os objetos para poderem interagir. É justamente nesse tipo de problema, que não é o problema da regra de negócio da aplicação, que podemos utilizar frameworks para facilitar o trabalho.

    Leia mais…