urubatan:
tem situações no velocity onde é obrigatorio utilizar ${valor.propriedade} ai vai dar conflito com a EL.
por exemplo, se tu quiser imprimir: ${valor.propriedade}.qualquer outra coisa
tem que utilizar ${} se não da pau mesmo …
Fala Urubatan !!!
Dei uma olhada na documentação do velocity e lá ele fala que só é necessário usar a notação ${} quando vc estiver fazendo concatenação de strings.
Ex:
#set( $size = "Big" )
#set( $name = "Ben" )
Concatenando: ${size}Tall$name ## $sizeTall$name não funciona...
Então como regra para resolver conflitos:
:arrow: Se é velocity use $user.name.firstName e nunca ${user.name.firstName}
:arrow: Se é EL use ${user.name.firstName}, pois só dá para usar isso mesmo. (EL não aceita $user.name.firstName)
:arrow: Se é velocity e é concatenação de strings, que é o tal caso que vc é obrigado a usar ${}, então use o tag <mtw:velocity> para indicar que estamos falando de velocity e não de EL. Ex: <mtw:velocity> ${size}Tall$name</mtw:velocity>
O ideal é que quando vc precise fazer concatenação vc opte por EL para não complicar as coisas. Ex: ${size}Tall${name}.
Note que como primeiro o JSP é processado por inteiro e depois o Velocity é processado, mesmo que vc deixe ${size}Tall$name sem o tag <mtw:velocity> no final das contas tudo funciona.
Primeiro o JSP vai transformar em BigTall$name e depois o velocity em BigTallBan.
Ou seja, é bem difícil vc conseguir fazer uma cagada misturando JSP com Velocity. Se vc quiser realmente criar um problema, acho que a situação abaixo vai dar pau:
#set( $size = "Big" )
Concatena: ${size}Tall$name
Isso vai dar pau pois o JSP não sabe nada a respeito do set do velocity, daí ou o JSP vai colocar o valor que ele tem de size ou vai apagar o ${size}.
Para solucionar o único jeito então seria:
<mtw:velocity>
#set( $size = "Big" )
Concatena: ${size}Tall$name
</mtw:velocity>