Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
 Странная ошибка  [new]
asv79
Member

Откуда: Тверь
Сообщений: 2732
У меня есть форма которая передает скрыто id
<input type="hidden" name="id" value="${q.id}">

есть контроллер который на основе этого id берет из репозитория элементы

@PostMapping("/save")
public String gg(
        
        @RequestParam(name = "id") Question question,
        @RequestParam(name = "text") String text,
    
) {
    question.setText(text);


все прекрасно работало и работает пока id<1000
если id >1000
получаю вот такой прикол

Failed to convert value of type 'java.lang.String' to required type 'com.alekseev.Javatesting.Entity.Question'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [java.lang.Long] for value '1,042'; nested exception is java.lang.NumberFormatException: For input string: "1,042"
org.springframework.web.method.annotation.MethodArgumentTypeMismatchException: Failed to convert value of type 'java.lang.String' to required type 'com.alekseev.Javatesting.Entity.Question'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [java.lang.Long] for value '1,042'; nested exception is java.lang.NumberFormatException: For input string: "1,042"



причем если я явно указываю Long.ValueOf(String) вот тут

[SRC JAVA]
@PostMapping("/save")
public String gg(
        
        @RequestParam(name = "id") String id,
        @RequestParam(name = "text") String text,
    
) {
Question question=questionRepo.findById(Long.ValueOF(id);
    question.setText(text);
[/SRC]

не пойму почему до 999 спринг сам может сходит в репозиторий и там взят вопрос с id нужным а после 1000 не может?
25 окт 19, 16:56    [22002860]     Ответить | Цитировать Сообщить модератору
 Re: Странная ошибка  [new]
chpasha
Member

Откуда:
Сообщений: 8596
asv79
не пойму почему до 999 спринг сам может сходит в репозиторий и там взят вопрос с id нужным а после 1000 не может?

потому что у тебя после 999 появляется разделитель тысяч (а не должен) - у тебя ж сообщении написано Failed to convert from type [java.lang.String] to type [java.lang.Long] for value '1,042'
25 окт 19, 17:30    [22002912]     Ответить | Цитировать Сообщить модератору
 Re: Странная ошибка  [new]
chpasha
Member

Откуда:
Сообщений: 8596
P. S. предвосхищая следующий вопрос, гугли как во freemarker выводить числа в "комьютерном формате". Даю подсказку "built-ins for numbers"
25 окт 19, 17:33    [22002917]     Ответить | Цитировать Сообщить модератору
 Re: Странная ошибка  [new]
asv79
Member

Откуда: Тверь
Сообщений: 2732
chpasha
P. S. предвосхищая следующий вопрос, гугли как во freemarker выводить числа в "комьютерном формате". Даю подсказку "built-ins for numbers"

понял спасибо,я в принципе так сразу и понял - смотрю "1,042"
25 окт 19, 17:46    [22002930]     Ответить | Цитировать Сообщить модератору
 Re: Странная ошибка  [new]
asv79
Member

Откуда: Тверь
Сообщений: 2732
я просто не понял почему Long.ValueOF("1,042")
нормально парсит эту переменную
а спринг не может-он какие то другие механизмы чтоли использует?
25 окт 19, 17:49    [22002932]     Ответить | Цитировать Сообщить модератору
 Re: Странная ошибка  [new]
chpasha
Member

Откуда:
Сообщений: 8596
asv79
я просто не понял почему Long.ValueOF("1,042")
нормально парсит эту переменную

уверен?
25 окт 19, 17:57    [22002940]     Ответить | Цитировать Сообщить модератору
 Re: Странная ошибка  [new]
asv79
Member

Откуда: Тверь
Сообщений: 2732
chpasha
asv79
я просто не понял почему Long.ValueOF("1,042")
нормально парсит эту переменную

уверен?

да какой то прикол - на работе работало.дома пришел не работает)
я же изначально то понял в чем ошибка переделал- на Long.ValueOF и у меня ошибки не было - вопрос с репозитория взялся без проблем
поэтому и тему создал ,я думаю раз valueOf - нормально парсит ( ошибок то не было) почему спринг не может
щас дома сразу вылетел numberformat что в принципе логично
25 окт 19, 18:02    [22002944]     Ответить | Цитировать Сообщить модератору
 Re: Странная ошибка  [new]
Scott Tiger
Member

Откуда: вмваре
Сообщений: 6838
asv79, потому что в разных локалях формат записи чисел разный. Где-то есть разделитель групп разрядов, где-то его нет, где-то он проблел, где-то точка, где-то - запятая. А где-то запятая отделяет целую часть от дробной. Это всё играет минимум в двух местах - в JRE сервера и браузере клиента. Нужно быть готовым ко всему.
28 окт 19, 16:41    [22004423]     Ответить | Цитировать Сообщить модератору
Все форумы / Java Ответить