@MaxRybalkin
Изучаю JAVA

Как преобразовать @PathVariable в число?

Имеется контроллер, который выводит форму редактирования пользователя:
@GetMapping("{user}")
    public String editForm(@PathVariable User user, Model model) {
        if (user.isAdmin()) {
            return "redirect:/users";
        }
        model.addAttribute("user", user);
        model.addAttribute("roles", Role.values());
        return "userEdit";
    }

Проблема следующая - в базе пользователя создаются с секвенсом от 100000, а потому при подобном запросе:
localhost:8080/users/100%C2%A0002

который имеет ввиду запрос профиля юзера с id = 100002 я получаю ошибку
Failed to convert value of type 'java.lang.String' to required type 'ru.topjava.graduation.model.User'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [java.lang.Integer] for value '100 002'; nested exception is java.lang.NumberFormatException: For input string: "100 002"

На фронте все весьма просто:
<#import "parts/common.ftl" as c>

<@c.page>
    List of users
    <table>
        <thead>
        <tr>
            <th>Name</th>
            <th>Role</th>
            <th></th>
        </tr>
        </thead>
        <tbody>
        <#list users as user>
            <tr>
                <td>${user.username}</td>
                <td><#list user.roles as role>${role}<#sep>, </#list></td>
                <td><#if !user.isAdmin()><a href="/users/${user.id}">edit</a></#if></td>
            </tr>
        </#list>
        </tbody>
    </table>
</@c.page>

Как это обойти без "топорного обрезания" пробелов в строке?
  • Вопрос задан
  • 210 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
Вы зачем-то вместо числа передаёте последовательность из двух чисел, разделённых символом неразрывного пробела.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽