Не судите строго, ошибка в какой-то мелочи наверное. Есть view.jsp
, кусок интересующего кода вот:
<h1 class="tab"> View parts of details </h1>
<c:if test="${!empty detailList}">
<table class="tab">
<tr>
<th width="200">Name</th>
<th width="80">Required</th>
<th width="60">Count</th>
<th width="60">Edit</th>
<th width="60">Delete</th>
</tr>
<c:forEach items="${detailList}" var="detail">
<tr>
<td>${detail.name}</td>
<td>${detail.required}</td>
<td>${detail.count}</td>
<td><a href="<c:url value='/edit/${detail.name}/${page}/${detailList.size()}/${nameoflist}'/>">Edit</a></td>
<td><a href="<c:url value='/delete/${detail.id}/${page}/${detailList.size()}/${nameoflist}'/>">Delete</a></td>
</tr>
</c:forEach>
</table>
</c:if>
из строки со ссылкой, а конкретно вот этой:
<td><a href="<c:url value='/edit/${detail.name}/${page}/${detailList.size()}/${nameoflist}'/>">Edit</a></td>
Перебрасывает в контроллер, конкретно вот сюда:
@GetMapping("/edit/{name}/{page}/{dlist}/{nameoflist}")
public String edit(Model model,
@PathVariable("name") String name,
@PathVariable("page") int page,
@PathVariable("dlist") int dlist,
@PathVariable("nameoflist") String nameoflist){
Detail detailForEdit = serviceClassDetail.findByName(name);
System.out.println(detailForEdit.getName() + detailForEdit.getId() + detailForEdit.getCount());
String str = serviceClassDetail.creatRedirectForEditDelete(dlist, nameoflist, page);
model.addAttribute("detailForEdit", detailForEdit);
return str; // "redirect:/[nameoflist]?=[page]"
}
Из которой редиректится обратно в view. Однако когда я пытаюсь достать там эту переменную, ее там не оказывается вообще. Где и что я не правильно делаю?
Пытаюсь просмотреть эти данные во вьюхе просто:
<c:if test="${detailForEdit != null}">
<a> ${detailForEdit.name} </a>
</c:if>
<a> detailForEdit = ${detailForEdit.name} </a>
PS: описание логики: при нажатии на edit
, я знаю какой элемент мне нужно изменить, перехожу в контроллер-гет-маппинг, там достаю данные для изменений и хочу их подставить во вьюху для уже последующих изменений, редиректюсь туда, но туда эти данные через модель не приходят, почему? Да, sout в контроллере это для проверки, что данные там действительно есть.
Спринг никогда не делает редирект на вью, он использует диспатчер сервлет для направления в JSP. Потому, что JSP - это сервлет, который создается автомвтически после компиляции JSP.
Если вы будете использовать шаблонизатор типа thymeleaf или freemarker, или velocity то тогда после обработки контент сразу пишется в ответ и вам не придется перенаправлять один сервлет на другой.
Как использовать шаблонизатор thymeleaf можно почитать здесь. Что касается freemarker и/или velocity то почитать можно тут. То есть для конкретного шаблонизатора надо выбрать соответствующий вью резолвер.
Если вы еще хотите продолжать использовать JSP для вью, то вашу проблему лучше всего решать если использовать тэги <spring>
вместо JSTL. Обратите внимание на то каким образом данные связываются с моделью.
Если вам непонятна суть использования редиректа, то следует почитать здесь каким образом и когда следует, используя методы POST/GET для запросов, развивать PRG паттерн. Этот паттерн часто используется в CRUD приложениях, когда данные из формы после add/edit сабмитятся в контроллер и и он перенаправляет на другой контроллер для просмотра/показа добавленных/измененных данных.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Вот мой код! Приложение запоминает имя и статус чтобы показать их оффлайн но как мне сохранить изображение чтобы показать их оффлайнЗаранее...
Я запускаю Jetty сервер и пытаюсь зарегистрировать сервлетВот в таком виде все работает:
Пытаюсь сделать приложение на полный экран (для всех активити)Создал абстрактный FullscreenActivity и наследую от него остальные активити
До сборки проекта путь к ресурсам такой "src/main/resources/", после сборки этот путь уже не работает, тк в файле jar ресурсы находятся в самом начале