@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>

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

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

Похожие вопросы