我正在尝试在一个页面上创建一个包含动态表的Webflow。看起来像这样
def startFlow = {
contact {
on('next') {
flow.developer = params.developer
flow.project = params.project
flow.division = params.division
flow.projectResponsible = params.projectResponsible
flow.email = params.email
[flow : flow]
}.to('ipcount')
on('cancel').to('finish')
}
ipcount{
on('next'){
flow.ipcount = params.int('ipcount')
[flow: flow]
}.to('systems')
on('cancel').to('finish')
}
systems{
on('next') {
flow.hoster= params.hoster
flow.ip = params.ip
flow.os = params.os
flow.dns = params.dns
flow.systemDate = params.systemDate
[flow : flow]
}.to('url')
on('cancel').to('finish')
} ....
问题是我的系统数量每次都可能不同(1 ... n)。 一个想法是在应该创建多少条目之前询问页面(ipcount)。
我的观点看起来像这样
<g:set var="count" value="${flow.ipcount}" />
<g:each in="${(1..'${count}')}">
<tr class="prop">
<td valign="top" class="name">
<label for="ip">IP Adresse:</label>
</td>
<td valign="top">
<td valign="top" class="value ${hasErrors(bean:hosterInstance,field:'ip','errors')}">
<input type="text" id="ip" name="ip" value="${params.ip}" />
</td>
<td valign="top" class="name">
<label for="dns">DNS:</label>
</td>
<td valign="top">
<input type="text" id="dns" name="dns" value="${params.dns}" />
</td>
<td valign="top" class="name">
<label for="os">Operating System:</label>
</td>
<td valign="top">
<input type="text" id="dns" name="dns" value="${params.os}" />
</td>
</tr>
</g:each>
除此之外,这不起作用,因为我得到一个内部服务器错误:( java.lang.String不能转换为java.lang.Integer)如果我可以在页面上动态地在表行,它会更好。 这是一个问题:这可能与webflow有关吗?特别是我不知道如何处理流参数以及如何将收集的条目保存在Webflow的末尾到数据库。
答案 0 :(得分:2)
如果您需要使用对象列表,command objects是可行的方法。它支持来自传入请求的数据绑定,并将处理列表。
您可以查看a related question,告诉您该怎么做。
在您看来,您需要在输入名称中处理索引。例如:
考虑
class System {
String ip
String dns
...
}
commandInstance.systems
一个List<System>
。
<g:each in="${commandInstance.systems}" var="command" status="i">
<input type="text" id="ip$i" name="systems[$i].ip" value="${command.ip}" />
</g:each>