Forms 提交Grails表单的一些简便技巧是什么?

Forms 提交Grails表单的一些简便技巧是什么?,forms,grails,groovy,gsp,Forms,Grails,Groovy,Gsp,每个人都知道通过html表单将参数传递给控制器: <g:form action="save"> <g:textField name="text1" /> </g:form> 我隐约意识到能够在Grails中将这些参数构造成某种对象表示法: <g:form action="save"> <g:textField name="text.a" /> <g:textField name="text.b" /> &l

每个人都知道通过html表单将参数传递给控制器:

<g:form action="save">
  <g:textField name="text1" />
</g:form>

我隐约意识到能够在Grails中将这些参数构造成某种对象表示法:

<g:form action="save">
  <g:textField name="text.a" />
  <g:textField name="text.b" />
</g:form>

我几乎不知道它们在控制器中是如何构造的(对象?hashmaps?我记得在后一个示例中,在某个时候不得不使用.value)

所以我猜这个问题实际上是两个问题:

  • Grails如何处理对象表示法中的参数,如第二个示例?你也能把它们放到数组里吗

  • 关于表单提交及其参数,还有哪些技巧可以使具有非常复杂和迭代数据的表单在控制器中处理起来很简单?例如,ATG允许您将表单字段绑定到bean,并遍历其整个属性图,以找到需要设置的属性

  • 第二种表示法
    “text.a”
    用于消除从属性到域对象的数据转换的歧义。例如,如果您有两个域对象,每个域对象都有一个属性
    “a”
    ,如果执行
    domObj1.properties=params
    domObj2.properties=params
    操作,则该值将转到两个域对象,这两个域对象可能不是您想要的。因此,在您的视图中,应该有变量domObj1.a和domObj2.a,在grails控制器中,您可以使用
    def domObj1=new domObj1(params[“domObj1”])进行实例化。

    第二个问题是,如果您的意思是是否可以对对象进行迭代,那么可以在${}包装器中使用GPath语法,例如检查下面id属性中的代码

    <td><g:remoteLink controller="device" action="getDevice" id="${objInstance.prop1.prop2.id}" update="propDetail">${fieldValue(bean: objInstance.prop1, field: "prop1")}</g:remoteLink></td>
    
    ${fieldValue(bean:objInstance.prop1,字段:“prop1”)}
    
    上面的示例还显示了从grails gsp提交表单的ajax方式