[RESOLVIDO] Formatar Dados

7 respostas
J

Pessoal, sou iniciante em Java e estou usando Vraptor para um projeto.

Eu tenho uma informação em bd, salva nesse formato “6201500” e gostaria de exibir para o usuário assim: “6201-5/00”.
Usando Vraptor, a lista com essa informação é passada para a view da sequinte forma:

result.include("ufList", daoUf.listaTodos());

E acesso na view:

<select name="empresa.uf.id">
<c:forEach items="${ufList}" var="uf">
<option value="${uf.id}">${uf.codigo}-${uf.nome}</option>
</c:forEach>
</select>

Como tentamos separar a lógica da apresentação, como eu poderia formatar o código da Uf, no formato desejado.
Teria que criar uma função em jsp ou jstl na view? Se tem como acessar um metodo do controller pela view, etc.

Desculpem pela falta de conhecimento, tolo é quem fica com a dúvida… :slight_smile:

Desde já obrigado.

7 Respostas

DavidUser
B

Normalmente eu faço um getCodigoFormatado que retorna uma String, e chamo na jsp com {uf.codigoFormatado}.

Isso ou esse código vira um Tiny Type, e faço a formatação dentro do toString, e na jsp fica {uf.codigo}.

J

David, obrigado pela ajuda.

Mas no caso não teriamos interação com Js. Poderiamos até fazer com Js, mas veja que o valor será apresentado em um option do select. Imagine o pog para formatar com js.
Se fosse um valor que o usuário digitasse em um campo de text, entraria esse tipo de mascara.

De qq forma, valeu!

DavidUser

Para formação de campos que normalmente são guardados e manipulados de modo puro o ideal é deixar o trabalho para a visualização, assim você utiliza o que é chamado de mascara de campo.

Normalmente em aplicações web isso fica por conta do javascript e em UIs Desk a maioria das frameworks fornecem tais mascaras.

DavidUser

Caso seja para mostrar use o jstl mesmo:

J

David,

Acredito que a saida será por jstl mesmo, segundo o que conheço até agora.
Mas você viu que é uma formatação especifica? Usei jstl para valores monetários, foi tranquilo.
Mas acredito que tenha que criar um pequena função para formatar como desejado, ####-#/##.

Se fosse em php, seria algo assim: <?php echo substr($string, 0, 4).'-'.substr($string, 5, 1)."/".substr($string, 7,2) ?>

Acho que em jsp podemos fazer algo do tipo, mas a ideia era não ter essa mistura de codigo com o html, entende?

Pensei que teria uma forma mais “elegante” de fazer isso… :slight_smile:

J

Pessoal,

Não consegui da forma que eu queria, deixo aqui algumas dicas para quem vier precisar.

Tentei usar o pattern do Jstl, assim:

<fmt:formatNumber value="${variavel}" pattern="####-#/##"/>

Não funcionou comigo, só formata número mesmo, com casas decimais.

Encontrei um forum, com a mesma dúvida, mas também sem solução, segue:

Então vai para solução “feia” msm.
Usei as funções do jstl, substring, e ficou assim

${fn:substring(uf.codigo, 0, 4)}-${fn:substring(uf.codigo, 4, 5)}/${fn:substring(uf.codigo, 5, 7)}

Acabei

Criado 27 de fevereiro de 2013
Ultima resposta 27 de fev. de 2013
Respostas 7
Participantes 3