使用webflow和grails创建动态表

使用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

我正在尝试在一个页面上创建一个带有动态表的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')
    } ....
  <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。。。