Problema com public static final e getServletContext()

7 respostas
ThiagoCola
<%! public static final String SRV_ROOT = getServletContext().getRealPath("/"); %>

Erro: non-static method getServletContext() cannot be referenced from a static context.

7 Respostas

drsmachado

Bom, você não pode invocar um método não static para valorar uma variável static. É uma restrição da linguagem…

ThiagoCola

Bom, disso eu já sabia.

Mas o que voce faria para armazenar esta informação (getServletContext().getRealPath("/")) em uma constante?

drsmachado

Nunca tive a necessidade de colocar o context numa constante. Aliás, scriptlet é algo que não utilizaria…
Uma sugestão é mantê-lo como variável, pois, no contexto da página ela se manterá a mesma, a não ser que você force a alteração.

ThiagoCola

A principio eu to fazendo isso, mas pelo que andei lendo, o pessoal cria uma classe para concentrar as constantes. Esta é a melhor prática?

drsmachado

Se você usa java < 1.5, sim. Senão, sugiro enums

ThiagoCola

Como eu vejo a versão aqui?

O JDK do projeto é 1.6

drsmachado

Então, você pode usar enum. De modo grosseiro (E muito grosseiro) enum é uma classe de constantes evoluída, melhorada e superior.
Dá uma pesquisada aí.

Abraço

Criado 30 de maio de 2011
Ultima resposta 31 de mai. de 2011
Respostas 7
Participantes 2