Grails将g:textField参数形成为Controller

时间:2017-12-04 17:19:11

标签: grails controller

我对Grails很新,我修改了一些以前存在的按钮功能,现在它应该向控制器发送2个参数。在this tutorial的帮助下,我写了:

GSP

<div class="modal fade" id="myModal" role="dialog">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header"><button type="button" class="close" data-dismiss="modal">&times;</button><h4 class="modal-title">Some Title</h4></div>
            <div class="modal-body">
                <g:form>
                    <div class="input-group">
                        <span class="input-group-addon">Parameter 1</span>
                        <g:textField name="parameter1" size="24" class="form-control" />
                    </div>
                    <div class="input-group">
                        <span class="input-group-addon">Parameter 2</span>
                        <g:textField name="parameter2" size="24" class="form-control" />
                    </div>
                    <g:actionSubmit action="myAction" value="Go" class="btn btn-success"
                                    data-toggle="tooltip" data-placement="top"
                                    title="${grailsApplication.config.myTitle}" />
                </g:form>
            </div>
        </div>
    </div>
</div>

myController的

// Though it is not mentioned in the tutorial, I've added 2 class properties.
// Otherwise I'd get a groovy.lang.MissingPropertyException
def parameter1
def parameter2

def myAction = {
    doSomething(parameter1, parameter2)
}

// previously : 
// def myAction = {
//     doSomething()
// }

这两个参数是&#39; null&#39;何时调用该方法。我该怎么做才能将参数处理到控制器方法?

文件名,导入和类似的东西应该不是问题,因为函数的调用在没有参数的情况下运行良好。模态对代码来说是新的,因为它用于获取parameter1和parameter2的值。只要参数不在控制器方法的签名中,模态本身就能很好地工作。

我已经尝试过&#34; grails clean&#34;根据{{​​3}}。 Grails版本2.5.4

2 个答案:

答案 0 :(得分:1)

试试这个

// def parameter1 // you do not need this
// def parameter2 // you do not need this

def myAction = {
    doSomething(params.parameter1, params.parameter2)
}

答案 1 :(得分:1)

我不确定确切的版本,但是从grails 2.x而不是闭包你必须使用方法来定义控制器的动作。这段代码应该可行

def myAction() {
    doSomething(params.parameter1, params.parameter2)
}

或者它可能是这样的,假设两个参数都是字符串

def myAction(final String parameter1, final String parameter2) {
    doSomething(parameter1, params)
}

在共享表单的示例中,没有定义目标操作,因此您应该使用post方法转到当前操作