2017-07-07 80 views
0

我對grails完全陌生,我很感激任何幫助。 此代碼是在我的GSP文件:Grails - 如何從窗體調用控制器方法

<g:form action="backfillMachineTags"> 
      <fieldset class="buttons"> 
       <g:submitButton name="create" class="save" 
           value="${message(code: 'default.button.create.label', default: 'Create')}"/> 
      </fieldset> 
     </g:form> 

而這種代碼是在我的RegressionPoolMachineController.groovy文件:

def backfillMachineTags() 
    { 
     flash.message = "testing message" 
     redirect(action: "list") 
    } 

但是當我點擊提交表單上的按鈕時,從未進入過法我找不到404。

消息:/池經理/ regressionPoolMachine/backfillMachineTags

狀態:所請求的資源不可用。

我也試着這樣做:

<g:form url="[action:'backfillMachineTags',controller:'RegressionPoolMachineController']"> 

卻得到了一個類似404未找到。

我錯過了連接我的表單和控制器的步驟嗎?

回答

1

除了「操作」屬性之外,還可以嘗試向表單中添加「控制器」屬性。您可以使用網址而不是控制器和操作,但您需要類似 url="${createLink(controller: "myController", action: "myAction")}"而不是您在此處顯示的內容。

參考:http://docs.grails.org/2.5.6/ref/Tags/form.html

您還可以在瀏覽器中生成的HTML(只是查看源代碼),看看實際上正在生成的網頁上生成的內容。這通常對找出爲什麼事情不會發生在你想要的地方很有幫助!

+0

要解釋一下:控制器默認情況下爲任何控制器,把你的頁面。所以它是可選的,但強烈建議(依我的經驗),因爲你可能會在稍後的項目中從其他路線進入該頁面,並指定一個控制器永遠不會受傷! – Daniel

1

嘗試使用以下命令:

<g:form controller = "controllerName" action ="actionName" > 
    <fieldset class="buttons"> 
     <g:submitButton name="create" class="save" value ="${message(code: 'default.button.create.label', default: 'Create')}"/> 
    </fieldset> 
</g:form>