2015-02-20 4 views
0

Я использую теги grails form и actionSubmit, и я получаю ошибку 404 при отправке (я использую Grails 2.3.7).Grails tag actionSubmit вызывает ошибку 404

В целях write.gsp:

<g:form action="send"> 
    <g:actionSubmit value="test1"/> 
    <input type="submit" value="test2"/> 
</g:form> 

и когда представление оказывается, это приводит:

<form method="post" action="/messaging/send"> 
    <input type="submit" value="test1" name="_action_test1"> 
    <input type="submit" value="test2"> 
</form> 

В контроллере:

class MessagingController { 
    def send = { 
     //some code here 
     chain(action:"read") 
    } 

    def read = { 
     // more working code 
    } 

} 

Итак, если я нажму на кнопку test2, он работает и отображается представление «read», но если я нажму кнопку test1, я получу:

HTTP Status 404 - /messaging/send 
type Status report 
message /messaging/send 
description The requested resource is not available. 

Почему actionSubmit не работает должным образом?

Мои подозрения связаны с автогенерированным name="_action_test1", потому что если я удалю подчеркивание (т. Е. Используя firebug), он будет работать.

Но согласно документации Grails использование тегов в порядке:

http://grails.github.io/grails-doc/2.3.7/ref/Tags/actionSubmit.html

ответ

0

Я считаю, что вам не хватает поле действия от actionSubmit:

<!--label derived from message bundle--> <g:actionSubmit value="${message(code:'label.update')}" action="Update" />

<g:actionSubmit value="test1" action="test1"/>

Используется его недавно в плагине, разорванном прямо из генерируемого g Рельсы код: https://github.com/vahidhedayati/jssh/blob/master/grails-app/views/jsshadmin/_edit.gsp, который отлично работает для меня

+0

Спасибо @vahid, ваш ПОДХОД включения работы действия (но я не понимаю, почему, потому что действие уже определено в виде тега): <г: actionSubmit действие =» send "value =" test1 "/> Я не понимаю, почему в документации сказано, что параметр действия является необязательным ... –

+1

да, это может показаться довольно запутанным, просто подумайте об этом по-другому, если вы объявите actionSubmit, затем в конкретной форме вы можете применить несколько действий, которые работают с той же формой, что и вы, как видите, в виде лесов для редактирования/удаления. Если вам нужна форма, которая сделала одно действие с ее результатами, вы можете использовать \t тогда это будет определено действие формы ... Надеюсь, это имеет смысл – Vahid