Olá pessoal.
Tenho um enum conforme segue abaixo:
public enum StatusProjetoEnum {
CADASTRADO ("CD", "Cadastrado"),
PUBLICADO ("PB", "Publicado"),
CANCELADO ("CN", "Cancelado"),
FINALIZADO ("FN", "Finalizado"),
FECHADO ("FC", "Fechado");
private String codigo;
private String descricao;
private StatusProjetoEnum(String codigo, String descricao) {
this.codigo = codigo;
this.descricao = descricao;
}
public String getCodigo() {
return codigo;
}
public String getDescricao() {
return descricao;
}
}
Como posso adicionar suporte a internacionalização num cenário como este?
Tentei as seguintes abordagens:
- Filter: através de filter eu não consegui pois não possuo acesso aos métodos getters utilizados para gerar uma possível resposta, e como estou usando JSF, isto precisaria ser tratado no momento em que um texto é atribuído ao valor de um componente (por exemplo um outputLabel)
- PhaseListener: tentei criar um listener para obter acesso ao contexto do faces durante uma fase específica ( por exemplo Render Response ) para modificar o resultado obtido após a execução de um getter do meu enum, porém a operação teria um custo alto ao tentar navegar por todos os componentes da árvore e buscar os métodos getters que devem ser traduzidos.
- Spring AOP: como estou usando o spring, tentei usar Aspectos p/ interceptar uma chamada a um getter que deva ser traduzido e então modificar o resultado. Porém não quero manter meus Entities no contexto do spring (desta forma toda utilização das entities deveriam ser obtidas do contexto do spring e como o hibernate quem cria os objetos pra mim... não poderei usar aspectos).
- Implementar a tradução no getter do próprio enum: estou pensando em implementar desta forma, porém meu enum ficará acoplado a uma instância do FacesContext, o que pode não estar disponível dependendo do contexto.
Alguém poderia me ajudar com alguma idéia melhor do que as que citei acima? Ou até mesmo ajudar a escolher entre uma destas opções?
Qualquer opinião será de grande ajuda.
Obrigado.