кнопка submit JSP

262
30 июля 2017, 07:30

В 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

Answer 1

Моя кошка очень умная, стоит ей объяснить проблему, стразу становится все ясно) (с) Александр Климов .. но это не точно.

Проблема в том, что в @RequestMapping(value = "chat/{id}", method = RequestMethod.POST) мы должны указывать не адрес с какой страницы исходит запрос, а с какой JSP он происходит.

Т.е. в моем случае, имя JSP "chat" и нужно указать @RequestMapping(value = "chat", method = RequestMethod.POST)

Так все работает!

READ ALSO
Оптимизация html-страниц для пользователя

Оптимизация html-страниц для пользователя

Есть лендинг на yii2 с возможностью оставить коментарииК каждому можно оставить еще коментарий

288
Как правильно: свойство float в css или Flexbox

Как правильно: свойство float в css или Flexbox

Как в настоящее время правильно верстать с помощью свойства float в CSS или использовать FlexBox, если нужно расположить блоки горизонтально

298
Отсортировать блоки

Отсортировать блоки

Есть такая разметка (код):

262
AICharacterControl unity c#

AICharacterControl unity c#

Помогите мне пожалуйста со скриптом c# unity выдаёт ошибку:

251