Имеется вот такой вот кусочек контроллера:
@RequestMapping(value = "/admin/control", method = RequestMethod.POST)
public String getListUser(Model model) {
model.addAttribute("user", new User());
model.addAttribute("listUser", userService.getListUser());
return "control";
}
@RequestMapping(value = "admin/control/remove/{id}")
public String removeUser(@PathVariable("id") Integer id) {
userService.removeUser(id);
return "redirect:/admin/control";
}
Сервис:
@Override
public List<User> getListUser() { return userDao.findAll(); }
@Override
public void removeUser(Integer id) {
userDao.delete(id);
}
Работает через JpaRepository. Представление:
<c:if test="${!empty listUser}">
<div id="table-student">
<table class="table table-striped">
<tr class="tr">
<td width="40">ID</td>
<td width="100">Имя</td>
<td width="100">Группа</td>
<td width="60">Удалить</td>
</tr>
<c:forEach items="${listUser}" var="user">
<tr>
<td>${user.id}</td>
<td>${user.username}</td>
<td>
<c:if test="${user.groupId eq 1}">ПО521</c:if>
<c:if test="${user.groupId eq 2}">ПО411</c:if>
<c:if test="${user.groupId eq 3}">ТЭ521</c:if>
<c:if test="${user.groupId eq 4}">ТЭ411</c:if>
</td>
<td><a href="<c:url value='/admin/control/remove/${user.id}'/>">Удалить</a></td>
</tr>
</c:forEach>
</table>
</div>
</c:if>
Ну и как вы уже поняли из названия, список пользователей не выводится. Запускал в режиме дебаггинга, до контроллера дело вовсе не доходит, просто не выводит, не понимаю почему. Может кто-нибудь видит ошибку?
А так же, может подскажет кто. Можно ли возвращать строку на несколько представлений? Чтобы не было дублирования методов. Чтобы я мог воспользоваться методом "getListUser" не только на "admin/control", но и по другому url.
UPD. Проблема решена, спасибо, действительно ошибся с выбором запроса. Извиняюсь за неправильную постановку вопроса.
Теперь проблема возникла в другом месте. Еще два метода контроллера:
@RequestMapping(value = { "/registration", "admin/control" } , method = RequestMethod.GET)
public String registration(Model model) {
model.addAttribute("userForm", new User());
return "control";
}
@RequestMapping(value = { "/registration", "admin/control" }, method = RequestMethod.POST)
public String registration(@ModelAttribute("userForm") User userForm, BindingResult bindingResult, Model model) {
userValidator.validate(userForm, bindingResult);
if (bindingResult.hasErrors()) {
return "control";
}
userService.save(userForm);
securityService.autoLogin(userForm.getUsername(), userForm.getConfirmPassword());
return "redirect:/admin/control";
}
Ошибка: Request processing failed; nested exception is java.lang.IllegalStateException: Ambiguous handler methods mapped for HTTP path 'http://localhost:8080/admin/control': {public java.lang.String com.bondarev.studentsystem.controller.UserController.registration(org.springframework.ui.Model), public java.lang.String com.bondarev.studentsystem.controller.UserController.getListUser(org.springframework.ui.Model)}
Есть частичное понимание сути проблемы, однако не знаю как её решить. Если кто-нибудь поможет сэкономить мне немного времени, буду благодарен.)
Судя по всему, проблема в неправильно назначенных на методы контроллера методов запроса. А чтобы список пользователей был доступен во всех представлениях контроллера, можно воспользоваться аннотацией @ModelAttribute.
@Controller
@RequestMapping("/admin/control")
public class UserController {
@Autowired
private UserService userService;
@ModelAttribute("users")
public List<User> users() {
return userService.getListUser();
}
@RequestMapping(value = "/", method = RequestMethod.GET)
public String getListUser(Model model) {
model.addAttribute("user", new User());
return "control";
}
@RequestMapping(value = "/remove/{id}", method = RequestMethod.POST)
public String removeUser(@PathVariable("id") Integer id) {
userService.removeUser(id);
return "redirect:/admin/control";
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Нужно сделать одинаковую высоту блоков, при чем не фиксированную, а чтобы можно было добавлять контент и высота всего блока menu подстраивалась...
Нужен пример html видео плеера для ie < 9И стоит ли в 2018 поддерживать ie < 9?
Очень долго пытаюсь решить проблему, необходимо иконки представленные на скриншоте, расположить под саму карточку товараПробовал z-index'ы
Допустим из админки будут добавляться iframe youtube на сайт, и количество добавляемых видео будет большоеСколько лучше должно быть видео на одной...