Onde formatar dados para a view

Amigos, tenho um metodo em um objeto da classe Chamado que me retorna um outro objeto, do tipo Period (joda time).

Period deve ser formatado para aparecer de forma amigavel na view. Para solucao de tal problema pensei em tres abordagens e gostaria da opiniao de vcs:

1 - Chamado, alem de ter os getters e setters para period teria metodos como: getPeriodFormatacaoX, getPeriodFormatacaoY
vantagem: nao teria de repetir o codigo de formatação em todas as views.
desvantagem: a cada nova formatacao exigida necessitaria de alterar minha classe.

2 - Cada view teria seu metodo especifico para formatar Period
vantagem: nao teria de alterar minha classe a cada nova formatação exigida
desvantagem: caso 2 views tivessem a mesma formatação, o codigo seria duplicado

3 - Desenvolver uma classe estatica (ai que estruturado!) e passar o Period para que ela me retornasse a formatação de acordo com o metodo chamado
vantagem: o codigo de formatacao ficaria centralizado aqui e poderia ser reutilizado em varias views sem duplicaçao
desvantagem: ter uma classe formatadora pra isso, me parece estranho (ou nao ?)

qual vcs acham mais vantajosa ou como resolveriam tal situação ?

grande abrassssssss

eu ficaria com a opção 1. Analise se há realmente a necessidade de um getPeriod ou se isso seria omitido em função dos métodos getPeriodFormatado.

Fera no seu caso é mais simples, pois a maioria dos frameworks tem conversores como o convertDateTime do JSF por exemplo.

Creio que a solucao mais bonita seria na verdade uma tag tipo a convertDateTime do JSF. Ai no caso converteria um tipo Period, DateTime do joda…

<h:outputText value="#{item.abertura.time}">
   <f:convertDateTime pattern="dd/MM/yyyy HH:mm:ss" />
</h:outputText>

o pessoal desses frameworks ja deveria ter implementado algo assim kkkkkkkkkkkkkkk (folgado) !!!

abrassss

Ou ainda criar uma nova classe estendendo Period e adicionando novas funcionalidades, como formatações.

A linguagem de templates do teu framework deveria facilitar isso. Em Java geralmente se usa JSTL e EL pra resolver esse problema. Alguns frameworks Java també mdão suporte a uma linguagem de templates baseada em groovy pra resolver o problema.

Um recomendação que te dou é evitar criar métodos getter formatando o valor. Isso não é responsabilidade do teu objeto de domínio, portanto, não faz sentido.

[]s

Bom dia!
Super interessante essa pergunta! Passo por dúvidas parecidas diversas vezes. Recentemente acabei optando pela solução (1), sem saber se seria a melhor solução. Achei que ficou meio “porco” pois acabei armazendo datas em campos do tipo String para evitar ao máximo ter código Java na view.

O que seria uma boa prática nessas situações?

Obrigado!