Jak mogę zmienić sposób formatowania GRAILS GSP fieldValue liczb całkowitych?

Mam pole w moim obiekcie domeny, które definiuję jako liczbę całkowitą ...

Integer minPrice

Następnie uzyskuję do niego dostęp na stronie GSP w następujący sposób:

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

a to, co dostaję w moim kodzie HTML to ...

100,000

która nie jest liczbą całkowitą, jest ciągiem. Co gorsza, jest to sformatowany ciąg w określonym języku.

Jest to problem, ponieważ mam formant SELECT na FORMIE HTML, który ma (nie porządkowy) zakres wartości minPrice, który chcę przechowywać w moim obiekcie domeny jako liczby całkowite, i nie chcę przechowywać indeksu do jakiś zestaw wartości, które muszę wielokrotnie mapować tam iz powrotem, chcę samej wartości.

Moja kontrola wyboru wygląda tak ...

<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"
/>

Gdy otrzymam wartość z pola SELECT, aby wysłać wiadomość z powrotem do serwera, poprawnie ma ona wartość całkowitą, którą utrzymuję. Jednak podróż powrotna nigdy nie wybiera wstępnie prawego wiersza z listy rozwijanej, ponieważ wartością jest ten ciąg rozdzielony przecinkami.

To działa dobrze w innym miejscu mojego kodu dla małych liczb, w których formatowanie przecinków nie wchodzi w grę, a podróż w obie strony z SELECT jest udana. Ale wartości> 999 nie działają.

Doktorzy mówią„Ten znacznik sprawdzi fasolę, która była przedmiotem powiązania danych i uzyska wartość pola albo z pierwotnie przesłanej wartości zawartej w obiekcie błędów komponentu bean, zapełniającej się podczas powiązania danych, albo z wartości właściwości komponentu bean. otrzyma automatycznie kodowanie HTML. ”

To ten ostatni bit, którego chcę uniknąć, ponieważ wydaje się formatować liczby całkowite. Więc, co trochę magii Grails / GSP muszę wiedzieć, więc mogę uzyskać moją liczbę całkowitą, która będzie renderowana jako liczba całkowita w moim SELECT i wstępnie wybrać odpowiedni wiersz?

EDYTOWAĆ: W oparciu o poniższe odpowiedzi wypróbowałem kilka dalszych rzeczy, a dotychczas bardzo rozczarowujące wyniki ...

Jeśli umieściłem<gformatNumber/> tag w moim<g:select/> Kod strony otrzymuję jako tekst w przeglądarce.

<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"
/>

Używając znacznika formatu liczb z GSP na mojej wartości całkowitej 100000 w ten sposób ...

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

daje100. Pamiętaj, żefieldValue oddać100,000, więc to nie jest niespodzianka.

Jeśli użyję tagspisu jsp w ten sposób ...

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

Dostaję błąd z kompilatora stronCannot format given Object as a Number.

Domyślam się, że mam większy problem niż nie mogę uzyskać wartości Integer jako prawdziwej liczby całkowitej w moim kodzie, jeśli jest ona większa niż 999 z powodu domyślnego (i nie konfigurowalnego) zachowania dyrektywy fieldValue. Jednak mój specyficzny problem braku możliwości wstępnego wyboru wartości całkowitej w kontrolce SELECT nie zniknie. W tej chwili tracę trochę.

Czy ktoś ma jakieś dalsze pomysły?

questionAnswers(8)

yourAnswerToTheQuestion