【问题标题】:Grails - how to call a controller method from a formGrails - 如何从表单调用控制器方法
【发布时间】:2017-12-11 23:35:22
【问题描述】:

我对 grails 完全陌生,感谢任何帮助。 此代码在我的 gsp 文件中:

<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 not found。

消息:/pool-manager/regressionPoolMachine/backfillMachineTags

状态:请求的资源不可用。

我也试过这样做:

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

但找不到类似的 404。

我是否缺少连接表单和控制器的步骤?

【问题讨论】:

    标签: grails groovy gsp


    【解决方案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>
    

    【讨论】:

      【解决方案2】:

      除了“action”属性之外,尝试在表单中添加“controller”属性。您可以使用 url 而不是控制器和操作,但您需要类似 url="${createLink(controller: "myController", action: "myAction")}" 而不是您在此处显示的内容。

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

      您还可以在浏览器中查看生成的 HTML(仅查看源代码)并查看生成的网页上实际生成的内容。这通常有助于找出为什么事情没有按照您的意愿进行!

      【讨论】:

      • 再解释一下:默认情况下,控制器是让您进入页面的任何控制器。所以它是可选的,但强烈推荐(无论如何根据我的经验),因为您稍后可能会在您的项目中从其他路径到达该页面,并且指定控制器永远不会受到伤害!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-07
      • 1970-01-01
      • 1970-01-01
      • 2012-03-27
      • 1970-01-01
      • 2012-06-12
      • 2020-10-09
      相关资源
      最近更新 更多