关于grails形式的问题

时间:2014-11-18 08:53:07

标签: forms grails

假设我的参数中有以下数据

  

参数:[输入:[1,2,3]]

我的Grails应用程序中有以下表单

<div class="block1">   
    <label class="control-label">
        <g:message code="input.label" default="Input"/>
    </label>
    <div class="controls">
        <g:textField id="input1" name="input" value="${input}" readonly="${actionName != 'show' ? false : true}"/>
    </div>
</div>
<div class="block2">   
    <label class="control-label">
        <g:message code="input.label" default="Input"/>
    </label>
    <div class="controls">
        <g:textField id="input2" name="input" value="${input}" readonly="${actionName != 'show' ? false : true}"/>
    </div>
</div>
<div class="block3">   
    <label class="control-label">
        <g:message code="input.label" default="Input"/>
    </label>
    <div class="controls">
        <g:textField id="input3" name="input" value="${input}" readonly="${actionName != 'show' ? false : true}"/>
    </div>
</div>

上面的表单设计是正确的,因为在我的表单设计中,会有几个相同名称的输入(但每个输入将在不同的主键下保存到数据库中),并且可以根据用户选择增加和减少。

使用上述

的几个问题
  • 如何使input1的值为params.input [0],input2为params.input [1],input3为params.input [2]在视图中?我可以毫无问题地从控制器传递模型,但我无法将值正确地分配给表单上的每个输入。
  • 有没有办法动态更改$ {input}的值?如果我想将值更改为$ {input [0]}或$ {input [1]}
  • 我可以使用g:each标签自动设置附加到表单中的块数量吗?如果从控制器我想将渲染块数量设置为3,那么我可以使用g:each标签在表单中渲染块3次吗?

由于

1 个答案:

答案 0 :(得分:1)

链接是如何使用ajax / jquery从远程调用中获取值并替换页面中的html元素(divId)的示例 - 此divId可以是整个

<input type="text" name="input" value="newvalue"/>  

触发上述某种形式的调用以获得新值..关于

  

G:文本字段

  • 是的,就像所有其他grails标签一样,它们最终被转换回正确的HTML术语......

如果您定义了

,则实际变量值是动态的
<input name="existingvariable" value="${something}" ...

其中某些东西是来自给定控制器的参数 - 然后你更新了呼叫,所以

:// YOURHOST:8080 / yourapp /控制器existingvariable = NEWVALUE

并刷新或点击此链接,这是ajax将为您执行新调用另一个控制器以生成新值或相同并将新值传递给它然后抓取数据并将其推回到divId上的操作。 ..(全部在后台)

Groovy loading into divs Grails - Select menu not rendering I want my selects dropdowns to auto populate with Ajax in Grails website

以上都与使用ajax填充/更新现有表单元素

有关

如果您希望使用新的实时值(在DB中不存在)更新实时表单,请查看modaldynamix插件。 //github.com/vahidhedayati/modaldynamix