2017-07-07 83 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>