Introdução ao Velocity

[quote=“Elvis.The.Pelvis”]#parse(“macros.txt”)

Quando usei #include, o conteudo foi incluido e gerado como output, mas ao usar #parse, não consegui usar as macros de dentro do template, ele não reconheceu as macros. To fazendo algo errado?
[/quote]

Deveria funcionar. Se voce vai usar como global essas macros, tem uma propriedade pra isso no velocity.properties. algo como global.vm.

Bem. Entao voce vai ter de mapear por servlet mapping.

[quote=“Elvis.The.Pelvis”]
Mais uma coisa, posso definir vários paths para
file.resource.loader.path?[/quote]

Sim, separa por virgula porque o velocity usa o extendProperties do jakarta-commons-colletcions. Voce pode setar essas variaveis em runtime tambem, eu acho mais interessante.

Bom dia a todos,

Gostaria de receber uma pequena dica. Acabo de instalar o velocity e tudo funcionou muito bem.

Gostaria de saber com posso configurar meu ambiente para não precissar usar o classpath, eu setei os .jars no classpath e isso me forçou a colocar o caminho de onde estão minhas classes também para que o classloader(java) as encontra-se. Gostaria de não precissar usar o classpath.

Obrigado
Marcos

Essas libs do Java que voce falou eh a rt.jar, por acaso?. Parece que voce esqueceu de incluir alguma coisa no classpath. Geralmente, fazendo

*nix ( bash )

export CLASSPATH=$CLASSPATH:/dir/meuJar1.jar:/dir/meuOutroJar.jar

Win

set CLASSPATH=%CLASSPATH%;c:\dir\meuJar1.jar

resolve o problema.

Rafael,

Primeiro obrigado.

A questão é a sequinte, quando eu instalo o velocity tenho que referenciar os .jars que contém as classes necessárias ao velocity. No artigo que tem no GUJ dis para eu setar no classpath o velocity-dep-x.x.x.jar e o velocity-x.x.x.jar no classpath onde x.x.x é a versão do velocity.

Ao faze-lo o meu ambiente passa a não enxergar orde está as minhas classes. por exemplo: c: esteVelocity este.java
c: esteVelocity este.vm
c: esteVelocity este.class
Ele compila legal mas não executa a classe, a menos que eu sete no mesmo classpath o diretório c: esteVelocity.

Ou seja tudo funcionou muito bem. Mas quero chegar a uma solução, caso tenha como, onde eu não tenha que setas no classpath os arquivos .jars para que assim eu não tenha que setas os diretórios onde eu tenho classes para executar.

E que eu nunca uso o classpath. Gostaria de saber como não usá-lo agora também. E aproveitando, gostaria de saber se não usar o classpath é uma boa ou não e porque.

Obrigado
Marcos

Quando as bibliotecas estao em .jar’s eh necessario referenciar cada uma mesmo, nao tem jeito. O problema que voce esta tendo eh porque faltou o diretorio corrente, representado pelo caracter de ponto, no classpath… por isso que ele nao achava a classe no diretorio que voce estava.

set CLASSPATH=.;XXXXX

note o “.;” ( ponto-e-virgula )… isso diz ao java para procurar as classes tambem no diretorio que voce se encontra.

Rafael

Rafael,

Muito obrigado.

Resolveu. Não sabia do “.;”. Se tivese que setar cada diretório onde tenho classes no classpath seria terrível.

Novamente Obrigado,
Marcos

Webwork2 e velocity!
Estou com essa dúvida de como fazer isso:

Seguinte:
preciso colocar valores dentro de um combobox usando tags do velocity no webwork2… uma combobox normal que seri no html

<select>
<option></option>
</select>

o que não ta dando certo seria colocar os valores no option…

to fazendo o seguinte :

eu crio meu array:
#set ($prior = [“Normal”, “Alta”, “Baixa”])

dai quando tento chamar os valores do array:

#bodytag (Form “name=‘name’” “action=‘InavisAction.action’” “method=‘post’”)

#tag(Select “label=‘Prioridade’” “name=‘inavis.avisTpPrioridade’” “value=$prior”)

#end
ele não consegue pegar o valor da variavel $prior dentro do value aí, o curioso é que se colocar fora ele traz os valores…

conclusão : não consigo miontar uma combobox com valores queeu quero definir…
alguem pode dar um help!

[/code][code]

Quer saber qual propriedade diz onde o Velocity grava os logs? Aqui está:

runtime.log = path/arquivo.log

penei muito para encontrar, aproveite a dica! :stuck_out_tongue:

[quote=“Rafael Steil”]Sim, pode perfeitamente.

Velocidade depende de como eh a qualidade do teu codigo. ( mas fica muito rapido sim ).

Rafael[/quote]

Bom, isso você está certo, usamos Velocity aqui para gerar códigos e com parser view, mas jsp é melhor… hehehe

Oi

Como consigo gerar arquivos .java com o velocity? alguem tem algum exemplo?

Obrigado…

Da mesma forma como vc gera qualquer outro tiop de arquivo com Velocity. A unica diferenca eh que o teu template devera usar as palavras-chave validas para um fonte jav :wink:

Rafael

Olá,

Estou tentando entender um pouco melhor o velocity, mas acho que não comecei muito bem.

Peguei o tutorial mas quando fui tentar rodar a classe de exemplo lá existente não consegui de forma alguma… Ele sempre da erro quando tenta localizar o arquivo de template.

“org.apache.velocity.exception.ResourceNotFoundException: Unable to find resource ‘template1.vm’”

Coloquei o caminho absoluto do arquivo no código e não funcionou, coloquei o arquivo de template no diretório do projeto e também não funcionou…

Alguém pode me ajudar??? O classpath está perfeito, pois existem algumas referências a classes do velocity antes de tentar localizar o template e essas estão funcionando.

Obs.: Uso o Jdev como IDE e container. Também costumo usar o Websphere (mas esse uso raramente)… E nos dois o erro foi o mesmo

Sinceramente eu acho isso puro MODISMO.

Não tem pra que eu chamar um script que se encontra em arquivo um vsl.

Motivos:

  1. Não tem nenhuma IDE que lhe auxilie a trabalhar com ela;
  2. Não existe nenhum auto-complete com os códigos;
  3. Não tem como debugar;
  4. Eu poderia resolver essa questão de não misturar código java com a apresentação facilmente utilizando Struts.

Estou falando isso por experiência própria.

:roll:

Pessoal,

Tenho um dúvida quanto ao Velocity. Eu sei que ele é usado para escrever documentos texto utilizando template + variáveis. No entanto, eu gostaria de uma ferramenta Java que fizesse o contrário disto: A partir de um template c/ variáveis + documento, obtesse um objeto Java de uma classe qualquer determinada. Em outras palavras tenho:

  • um template XML
  • um documento XML que “encaixa-se” neste template (ou seja, pode ter sido gerado por este template)
  • um objeto Java de uma classe qualquer que contenha atributos com os mesmos nomes das variáveis do template.

Gostaria de saber se o Velocity consegue ler os dados de um XML (por exemplo), baseando-se nas variáveis do template, para alimentar os atributos do objeto Java?

Exemplificando…

template XML:

<?xml version='1.0'?>
<Documento versao='${versao}'>
   <Atributos>
      <Atributo1 valor='${atributos.atributo1}' />
      <Atributo2 valor='${atributos.atributo2}' />
   </Atributos>
   <Name>${name}</Name>
</Documento>

XML:

<?xml version='1.0'?>
<Documento versao='5.5'>
   <Atributos>
      <Atributo1 valor='valor do atributo1' />
      <Atributo2 valor='valor do atributo2' />
   </Atributos>
   <Name>Nome qualquer...</Name>
</Documento>

Classes Java:

public class ClasseQualquer {
   private Atributos atributos;
   private String name;

   // Métodos set e get dos atributos private
}

public class Atributos {
   private String atributo1;
   private String atributo2;

   // Métodos set e get dos atributos private
}

Sendo assim, seria executado um processo ao qual um objeto da classe ClasseQualquer teria o atributo ‘name’ alimentado com ‘Nome qualquer…’, ‘atributos’ seria alimentado com um objeto da classe Atributos. Este por sua vez, teria os atributos ‘atributo1’ e ‘atributo2’ alimentados respectivamente com os valores: ‘valor do atributo1’ e ‘valor do atributo2’.

era isso…

putz… ninguem respondeu?!
Vai ver não existe isso né? :-o

Bom… ótima oportunidade para implementar…

Com Velocity eu não sei se da p/ fazer, mas qualquer parser xml por ae, tipo o XStream faz o que vc quer.

[]´s

[quote=jgbt]Com Velocity eu não sei se da p/ fazer, mas qualquer parser xml por ae, tipo o XStream faz o que vc quer.

[]´s
[/quote]

Obrigado pela resposta.
Nunca usei o XStream, mas pelo que pesquisei essa tecnologia não permite eu costumizar o meu XML. Eu quero que faça algo semelhante ao que faz o XStream, porém o formato do XML tem que ser costumizavel (por isto o exemplo que eu dei tem um TEMPLATE) pois as variáveis no XML podem estar contidas tanto dentro de TAGs quando dentro de atributos de TAGs.

Espero ter sido claro…

[quote=Administrador]Assunto: Através deste longo tutorial, apresentaremos as vantagens e facilidades de utilizar uma ferramenta de templates. Desta maneira, você irá separar a lógica do seu programa da apresentação dos resultados.

Você pode ler este tutorial na íntegra http://www.guj.com.br/java.artigo.18.1.guj

Por favor, coloque as suas dúvidas e seus comentários sobre este tutorial aqui.
Sinta-se livre para fazer qualquer tipo de pergunta, desta maneira você estará nos ajudando e aos outros usuários![/quote]

Bom dia.

Cara, eu sou um novo usuário desse fórum e tenho uma grande dúvida sobre VELOCITY.

Eu estou implementando uma notificação, e tenho que enviá-la por e-mail. Porém quero enviar esse e-mail formatado com logo, cor de fundo etc. É possível usar código HTML dentro desse arquivo - VELOCITY???

Ps. Se for possível, por favor mande um exemplo.

Grato por toda ajuda,

Elimarcos Alles.