Como posso mudar a forma como o GRAILS GSP fieldValue formata números inteiros?

Eu tenho um campo no meu objeto de domínio que eu defino como um número inteiro ...

Integer minPrice

Em seguida, acesso-o em uma página do GSP da seguinte maneira:

${fieldValue(bean: myBean, field: 'minPrice')}

e o que eu recebo no meu HTML é ...

100,000

que não é um número inteiro, é uma string. Pior ainda, é uma String formatada em um local específico.

Esse é um problema porque eu tenho um controle SELECT em um HTML FORM que possui um intervalo (não ordinal) de valores para minPrice, que eu quero armazenar no meu objeto de domínio como números inteiros e não quero armazenar um índice para alguma matriz de valores que eu tenho que mapear repetidamente, quero o próprio valor.

Meu controle de seleção fica assim ...

<g:select name="minPrice" 
value="${fieldValue(bean: personInstance, field: 'minPrice')}"  
onchange="setDirty()"
noSelection='${['0':'Select a number...']}'
from="${[
    ['name':'100,000', 'id':100000],
    ['name':'200,000', 'id':200000],
    ['name':'300,000', 'id':300000]
    ]}"
optionKey="id" optionValue="name"
/>

Quando recebo o valor do campo SELECT para postar de volta no servidor, ele corretamente possui um valor Inteiro, o qual persisto. No entanto, a viagem de retorno nunca pré-seleciona a linha direita no menu suspenso porque o valor é essa String separada por vírgula.

Isso funciona bem em outras partes do meu código para pequenos números em que a formatação de vírgula não é reproduzida e a ida e volta do SELECT é bem-sucedida. Mas valores> 999 não funcionam.

Os documentos dizem"Essa tag inspecionará um bean que foi objeto de ligação de dados e obterá o valor do campo a partir do valor enviado originalmente contido no objeto de erros do bean preenchido durante a ligação de dados ou do valor da propriedade de um bean. Uma vez que o valor for obtido, ele será automaticamente codificado em HTML ".

É o último bit que quero evitar, pois parece formatar números inteiros. Então, que pouco de mágica do Grails / GSP eu preciso saber para que meu Número inteiro seja renderizado como um número inteiro no meu SELECT e pré-selecione a linha correta?

EDITAR: Eu tentei algumas outras coisas com base nas respostas abaixo, com resultados bastante decepcionantes até agora ...

Se eu colocar o<gformatNumber/> tag no meu<g:select/> Eu recebo o código da página como texto no navegador.

<g:select name="minPrice" 
value='<g:formatNumber number="${fieldValue(bean: personInstance, field: 'minPrice')}" format="#" />'
onchange="setDirty()"
noSelection='${['0':'Select a number...']}'
from="${[
['name':'100,000', 'id':100000],
['name':'200,000', 'id':200000],
['name':'300,000', 'id':300000],
]}"
optionKey="id" optionValue="name"
/>

Usando a tag de formato numérico do GSP no meu valor inteiro de 100000 como este ...

var x = <g:formatNumber number="${fieldValue(bean: personInstance, field: 'minPrice')}" format="#" />;

100. Lembre-se de que ofieldValue devolve100,000, então isso não é uma surpresa.

Se eu usar o taglib jsp assim ...

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
var y = <fmt:formatNumber value="${fieldValue(bean: personInstance, field: 'minPrice')}" pattern=".00"/>;

Eu recebo um erro do compilador de páginasCannot format given Object as a Number.

Eu acho que tenho uma preocupação maior do que não consigo obter um valor inteiro como um inteiro genuíno no meu código se for maior que 999 por causa do comportamento padrão (e inconfigurável) da diretiva fieldValue. No entanto, meu problema específico de não conseguir pré-selecionar um valor Inteiro em um controle SELECT não está desaparecendo. No momento, estou um pouco perdida.

Alguém tem mais alguma idéia?

questionAnswers(8)

yourAnswerToTheQuestion