Pergunta

É possível aceder a um valor constante (isto é, uma variável public static final definido em uma classe Java) a partir de um modelo Velocity?

Eu gostaria de ser capaz de escrever algo como isto:

#if ($a lt Long.MAX_VALUE)

mas isso não é, aparentemente, a sintaxe direita.

Foi útil?

Solução

Há uma série de maneiras.

1) Você pode colocar os valores diretamente no contexto.

2) Você pode usar o FieldMethodizer para fazer todos os campos estáticos públicos em uma classe disponível.

3) Você pode usar um personalizado implementação Uberspect que inclui os campos estáticos públicos na ordem de pesquisa.

4) Você pode usar o FieldTool de VelocityTools.

Eu recomendo 1 por alguns valores, 2 para algumas aulas, 3 para muitas classes e valores, e 4 se você já estiver usando VelocityTools e de outra forma utilizar 1 ou 2.

Outras dicas

Velocity só pode usar qualquer coisa que encontra em seu contexto, depois de por exemplo.

context.put("MaxLong", Long.MAX_VALUE);

Você não pode usar estática, ou membros acesso estáticas de coisas em contexto de velocidade devido à forma como seus trabalhos de pesquisa (ver regras propriedade de pesquisa ). A melhor coisa a fazer é adicionar o valor que pretende verificar contra explicitamente em seu contexto.


Editar 06 de outubro na segunda vista, parece ser possível aos membros acesso estáticos. Veja a velocidade guia Developer - Suporte para "classes estáticas" Para maiores informações. Eu não tentei isso, no entanto.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top