В JSP я заполнил форму и отправляю кнопкой на сервер для обработки.
<button formaction="/chat/${idTopic+1}" class="pull-right btn btn-primary" type="submit">Send</button>
Дело в том, что адрес генерируется автоматически, JSP одна на всех пользователей. Если просто submit то он отправляет на адрес /chat/ для обработки, а нужно на адрес /chat/1 ...или 2, 3 и тд. Это id конкретной станицы топика.
<button formaction="/chat/${idTopic+1}"
formaction делает из моей кнопки просто ссылку, в БД не сохраняется объект и меня перенаправляет на страницу.
@RequestMapping(value = "chat/{id}", method = RequestMethod.POST)
public String addMessage(@ModelAttribute("messageForm") Message messageForm, Model model){
if(messageForm.getId() == null){
messageForm.setTopicId (id);
messageService.save (messageForm);
}
return "redirect:/chat/" + idURL;
}
тут по идее когда происходит отправка формы с "chat/{id}" программа обрабатывает POJO и сохраняет в БД, но этого не происходит. submit отправляет на /chat/
@RequestMapping(value = "chat/{id}", method = RequestMethod.GET)
public String welcome(Model model, HttpServletRequest request) {
model.addAttribute ("messageForm", new Message ());
//вытащим из URL id что-бы найти название топика в котором мы находимся
String url = request.getRequestURI ();//URL текущая страница
idURL = Integer.parseInt (url.split ("/chat/")[1]);//нужен для возвращения на ту же страницу POST
id = idURL - 1; //А это нужно, что-бы в JSP мы знали, в каком именно топике находимся и какие отображать сообщения
model.addAttribute ("idTopic", id);
return "chat";
}
Ну а это GET, тут все стандартно. Если кто-то отправил по адресу "chat/{id}", то открыть стандартную для всех JSP с именем chat
Моя кошка очень умная, стоит ей объяснить проблему, стразу становится все ясно) (с) Александр Климов .. но это не точно.
Проблема в том, что в
@RequestMapping(value = "chat/{id}", method = RequestMethod.POST)
мы должны указывать не адрес с какой страницы исходит запрос, а с какой JSP он происходит.
Т.е. в моем случае, имя JSP "chat" и нужно указать @RequestMapping(value = "chat", method = RequestMethod.POST)
Так все работает!
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть лендинг на yii2 с возможностью оставить коментарииК каждому можно оставить еще коментарий
Как в настоящее время правильно верстать с помощью свойства float в CSS или использовать FlexBox, если нужно расположить блоки горизонтально