Velocity x EL do JSP (Expression Language)

3 respostas
saoj

Pessoal,

Qual a vantagem de usar Velocity agora que o JSP tem EL (Expression Language).

Não vai dar no mesmo no final das contas ???

<c:forEach items="{$users}" var="user">
<c:out value="${user.name}" />
</c:forEach>

3 Respostas

_fs

Bem, você quis dizer qual a vantagem de usar Velocity para gerar views a partir de um servlet, certo? Pois Velocity tem muitas outras aplicações interessantes.

Bem, quanto ao porquê, te dou três razões de minha parte; por favor não as entenda como um ponto de vista a ser considerado para todos:

  1. com Velocity é quase impossível fazer coisas indevidas na camada view, já que suas funções são limitadas a esse fim.
  2. macros são bonitas e sempre vão ser :smiley:
  3. sintaxe mais simples. Prefiro
#foreach( $o in $objs
    $o.name
#end

// feio, mas para exemplificar
<checkbox #if( $b ) selected="true" #end />

a

<c:forEach items="{$users}" var="user">
    <c:out value="${user.name}" />
</c:forEach> 

// nem imagino como faz com JSP
  1. “Velocity” é uma palavrinha tão bonita @.@

Mas como eu disse, é muito particular. Do ponto de vista de desenvolvimento dá quase na mesma.

saoj

Me convenceu !!!

Mais algumas perguntas já que eu vi que vc está por dentro de Velocity.

  1. E aquela história de que cada template precisa ter o seu próprio servlet para processá-lo. (Provavelmente isso tá errado, né?) Minha preocupação é não perder a flexibilidade de fazer alterações no JSP e colocá-lo em produção sem ter que restartar o site, como eu teria no caso de um servlet.

  2. Qual o melhor plugin de Velocity para o Eclipse ???

  3. O melhor Getting Started para Velocity com Tomat com Eclipse ??? (Isso eu mesmo posso procurar no google, né?)

_fs
  1. Não precisa não cara hehe só mapear a extensão .vm ( ou qualquer outra ) para ser renderizada pelo Velocity Engine

  2. Eu uso o veloEclipse, faz bem o trabalho

  3. Após ter o jar do velocity devidamente colocado no diretorio WEB-INF/lib, adicione o seguinte ao seu web.xml (mude a classe de acordo com o jar)

<servlet> 
		<servlet-name>velocity</servlet-name> 
		<servlet-class>com.opensymphony.webwork.views.velocity.WebWorkVelocityServlet</servlet-class> 
		<load-on-startup>0</load-on-startup> 
	</servlet> 

	<servlet-mapping> 
		<servlet-name>velocity</servlet-name> 
		<url-pattern>*.vm</url-pattern> 
	</servlet-mapping>

E crie um arquivo velocity.properties em WEB-INF/classes. Há mais opções que estas, mas é bom pra começar

file.resource.loader.cache=true
wwfile.resource.loader.cache=true
wwfile.resource.loader.modificationCheckInterval=50

velocimacro.library.autoreload=true
velocimacro.library = VM_global_library.vm

input.encoding=ISO-8859-1
output.encoding=ISO-8859-1

edit: leia a documentação e os tutoriais com atenção. Há alguns detalhes que podem te atrasar a toa.
http://jakarta.apache.org/velocity/getting-started.html

Criado 16 de setembro de 2004
Ultima resposta 16 de set. de 2004
Respostas 3
Participantes 2