使用webflow和grails创建动态表
我正在尝试在一个页面上创建一个带有动态表的webflow。看起来像这样使用webflow和grails创建动态表,grails,groovy,spring-webflow,Grails,Groovy,Spring Webflow,我正在尝试在一个页面上创建一个带有动态表的webflow。看起来像这样 def startFlow = { contact { on('next') { flow.developer = params.developer flow.project = params.project flow.division = params.division flow.projectRes
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')
} ....
<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>
问题是每次系统的数量可能不同(1…n)。
一个想法是在创建多少条目之前询问页面(ipcount)
我的看法是这样的
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')
} ....
<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>
IP地址:
域名系统:
操作系统:
除此之外,这不起作用,因为我得到了一个内部服务器错误:(java.lang.String不能转换为java.lang.Integer)如果我能在页面上动态地查看表行就更好了。
这里有一个问题:webflow是否可能做到这一点,以及如何做到这一点?尤其是我不知道如何处理流参数,以及如何将webflow末尾收集的条目保存到数据库中 如果您需要处理对象列表,这是一种方法。它支持来自传入请求的数据绑定,并将处理列表 你可以看看那个节目是怎么做的 在您的视图中,您需要处理输入名称中的索引。例如: 考虑
class System {
String ip
String dns
...
}
和commandInstance.systems
a列表
对不起,我不明白你的答案。如何定义显示的条目数?如果我理解您的代码,这将呈现一个实例的所有字段。我编辑了变量名以使您更有意义。我正在浏览系统列表并打印他的属性。谢谢你的编辑。这就更清楚了。但这不是我的问题。我没有系统列表。我有一个用webflow创建的表单,希望创建新条目,以及如何在webflow中处理它们。您只想创建一个新实例或列表吗?无论如何,在这两种情况下,您都可以在webflow中附加该命令。如果需要多个实例,只需将属性的名称与索引一起使用:command[0].ip,command[1].ip。。。