Forms 关于grails形式的问题

Forms 关于grails形式的问题,forms,grails,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:text

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

参数:[输入:[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次吗

感谢

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

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

在触发上述某种形式的调用以获取新值时。。关于

g:文本字段

  • 是的,它与所有其他grails标记一样工作,最后它们被转换回正确的HTML术语
如果已定义,则实际变量值是动态的

<input name="existingvariable" value="${something}" ...

嗨,弗雷德,对不起,我希望我已经理解了你的要求。我认为,现在您的当前变量输入是一个arraylist,因为您已经定义了它3次(就像它是一个复选框列表一样),所以在您的第一个问题中,默认情况下它应该是什么?不确定您所说的第二个问题是什么意思,因为这取决于您希望在何处分配什么,以便您的值可以是${input[0]}您希望它是在何处。。第三个问题是为什么不为每个输入创建相同的元素textField,然后根据counterHi Vahid为其指定一个id。对于第一个问题“是”,这些可重复输入是一个arraylist。至于我的第二个问题,是关于动态编辑grails标记的。因为我可以将${input[0]}放在grails输入标记中,它会从我的控制器中获取输入[0]的值,但是一旦web启动,就无法动态地修改${input[0]}以表示类似${inputThis[0]}。而且使用jquery的attr('value','${inputThis[0]}')也没用。嗨,Fred,假设当你说inputThis时,你指的是其他数组值。。。您仍然可以使用jquery/ajaxget调用执行类似的操作,以便在单击或加载页面时触发某些操作,也可以向默认的grails应用程序添加类似angularjs的内容。对于jquery/ajax,请查看此插件中的一些示例。。我不太明白你想说什么${inputHis}与${input}基本相同,只是名称不同。我想问的是如何动态修改gsp标记属性。例如,gsp样式的文本输入是一个标记,但在web中它看起来就像一个普通的输入标记。我无法更改g:textField在web上运行时从何处获取其值的来源。无论如何,我会尝试查看您提供的链接,并查看任何可以帮助我的提示。Thankstorry太长时间未发表评论,将其作为答案添加-希望有用/帮助确定我在查看这些插件的代码时获得了一些实现想法。谢谢:D