#url #grails #controller #mapping
#url #grails #контроллер #сопоставление
Вопрос:
В моем приложении — grails 3.0 я пытаюсь вернуть пользовательский URL: /book/showbook/2 Контроллер выполняет два действия:
действие 1 — сбор пользовательской формы и создание книги объектов
действие 2 — отображение информации о созданной книге.
Установлен плагин Spring security.
Проблема: вместо отображения: /book/showbook/2 результатом кнопки отправки является: /book/showbook .
Код сопоставления URL-адресов:
static mappings = {
"/book/showbook/$id?(.$format)?"(controller: 'game', action: 'showbook')
"/$controller/$action?/$id?(.$format)?"{
constraints {
}
}
Просмотр кода действия 1:
<button type="submit" class="btn btn-danger btn-xs" params:[id: ${bookID}]>Submit data</button>
Код Action2:
def showbook(Book book) {
respond book
}
Ответ №1:
Я не думаю, что вы создаете форму так, как она должна быть. Вы можете прочитать официальный тег формы Grails. http://docs.grails.org/latest/ref/Tags/form.html
Пожалуйста, попробуйте это
<g:form name="book" action="showbook" id="${bookID}">
<button type="submit" class="btn btn-danger btn-xs">Submit data</button>
</g:form>
Пожалуйста, убедитесь, что ${BookID} определен где-то в вашем gsp или передан из вашего модального в соответствующее представление, иначе это не будет работать.
Комментарии:
1. Я использую форму, но я вставил ее не только для удобства чтения. Я проверю свое объявление формы, если я что-то упустил. Спасибо
2. Да, вы правы, моя ошибка была в форме: <g:form name=»create-new-form» url=»[действие:’showbook’, контроллер:’book’]»>. Он был жестко запрограммирован, что вызывает странное поведение. Спасибо