如何从网页表单上的文本框中获取输入

时间:2011-08-11 03:32:15

标签: html forms grails

这是关于Grails的! 这是一个非常基本的事情,我很难理解。

我在index.gsp

中有这个
<g:form name="testForm" url="[controller:'test',action:'index']">
   <g:textField name="Input A" value="${Input1}">  </g:textField>
   <g:textField name="Input B" value="${Input2}"> </g:textField> 
</g:form>

我的TestController类中也有这个:

class TestController {

    def index = {
        def Input1
        def Input2
    }
}

我想获取用户在网页上输入的两个输入,并将它们保存到控制器上的相应字段(Input1,Input2)。

我该如何解决?

感谢

5 个答案:

答案 0 :(得分:6)

你可以这样写你的表格:

<g:form name="testForm" controller="test" action="index">
 <g:textField name="Input1" value="${Input1}">  </g:textField>
 <g:textField name="Input2" value="${Input2}"> </g:textField> 
 <g:actionSubmit value="Send to controller"  action="index"/>
</g:form>

请注意,在这种情况下,

  1. 不需要g:form标签的控制器参数,它由惯例
  2. 使用
  3. 根据您的路线(和Grails版本),也可能会删除操作,但大部分时间,这是您为表单指定的内容,因此grails知道提交的位置
  4. 参数稍微不同步“输入A” - &gt; “输入1”
  5. 然后在控制器中

    class TestController {
    
       def index = {
        def Input1 = params.Input1
        def Input2 = params.Input2
        ["Input1": Input1, "Input2": Input2]
       }
     }
    

    这样,值将正确呈现(在返回的模型中)

答案 1 :(得分:1)

您从隐式变量“params”收到表单参数。在控制器中执行log.error(params),您就会知道它们是如何通过的。你可以访问你的参数 params."Input 1"

请注意,有一些简洁的方法可以处理来自一个类的多个输入,例如:给出一个域类:

class Test {
  String a;
  String b;
}

您可以使用表单:

<g:form name="testForm" controller="test" action="index">
  <g:textField name="test.a" value="${Input1}">  </g:textField>
  <g:textField name="test.b" value="${Input2}"> </g:textField> 
</g:form>

在控制器中你可以:

class TestController {

  def index = {
    def testInstance = new Test(params.test)
  }
}

然而,这个技巧只能在管理区域或其他地方使用,因为有一些安全方面的考虑要做。

答案 2 :(得分:0)

检查params地图。

您可以按名称访问字段:

def input1 = params.input1;
def input2 = params.input2

答案 3 :(得分:0)

所以提交按钮有效。

<g:form name="testForm" controller="test" action="index">
    <g:textField name="input1" value="${input1}"> </g:textField>
    <g:textField name="input2" value="${input2}"> </g:textField>
<g:submitButton name="Submit" value="Submit"></g:submitButton>
</g:form>

...

class TestController {

       def index = {
        def Input1 = params.input1
        def Input2 = params.input2


        render(Input1+"<br />")
        render(Input2+"<br />")
       }
}

答案 4 :(得分:-2)

class TestController {

       def index = {
        def Input1 = params.input1
        def Input2 = params.input2


        render(Input1+"")
        render(Input2+"")
       }
}