21 de out de 2012

Struts2 + Velocity


Nesse post vou mostrar uma action simples utilizando Struts2 e Velocity. No post anterior eu introduzi nos senhores, com todo o respeito, algumas noções sobre o VTL(Velocity Template Language). Agora vamos usar o Velocity como a camada de apresentação de uma aplicação web construída com Struts2.

Para aqueles que ainda nunca ouviram falar, o Struts2 é um framework para construção de aplicações web feito em Java. Originalmente o framework era chamado de WebWork 2. Depois de algum tempo as comunidades do Struts e WebWork uniram forças e criaram o Struts2.

Novamente vou utilizar o maven para construir o projeto. Vamos então as dependências necessárias:
        
            org.apache.struts
            struts2-core
            2.2.1
                
        
            org.apache.struts
            struts2-convention-plugin
            2.2.1
                
        
            org.apache.velocity
            velocity
            1.7
                
        
            org.apache.velocity
            velocity-tools
            2.0
        

A estrutura do projeto vai ficar assim:



Dentro do diretório /src/main/resources ficarão os arquivos de configuração do Struts2 e Velocity. Não entrarei em detalhes sobre cada linha de configuração, mas obviamente esses arquivos são essenciais para o funcionamento do framework.

No diretório /src/main/webapp ficarão os templates velocity. O arquivo VM_global_library.vm é o template de macros. Dentro dele você pode personalizar as macros que irá utilizar no seu projeto. As macros são armazenadas em memória portanto executas com maior rapidez.

Configuração do web.xml:


             
     Struts2+Velocity-AppExample
    
   
  index.html
   
        
 
  struts2
  org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
 

 
  struts2
  /*
 


Com o projeto configurado vamos agora criar uma action de teste usando annotations. Como é de costume a primeira implementação sempre é um HelloWorld, mas como aqui é Java, vamos criar um HelloMano!
package com.struts2velocityexemplo.action;

import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;

public class HelloManoAction {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    
    @Action(value = "/hello-mano", results = {
        @Result(name = ActionSupport.SUCCESS, type = "velocity", location = "/hello-mano.vm")})
    public String helloMano(){
        return ActionSupport.SUCCESS;
    }
}

Para que a action utilize um template velocity é necessário informar no @Result o type=”velocity” e o location do template, no caso o hello-mano.vm.

hello-mano.vm:
#include('header.vm')

Hello Mano

#if($!name)

Eaeeee $name.

Firmeza, truta?

#else
#end #include('footer.vm')

Um template bem simples. Se existir o $name exibir a saudação, senão exibir um formulário para enviar o nome. Note que existe um include do header e do footer que são templates separados.

Agora é só botar o projeto para rodar e ver o resultado!





Código fonte: http://depositfiles.com/files/8nfdutgzo

É isso ae truta. Aqui é Java!

Nenhum comentário:

Postar um comentário