Velocity x EL do JSP (Expression Language)

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>

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.

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é?)

  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