Имеется контроллер, который выводит форму редактирования пользователя:
@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>
Как это обойти без "топорного обрезания" пробелов в строке?