Grails,我怎样才能将对象列表从gsp传递给控制器

时间:2014-10-13 11:32:18

标签: grails

我有一个将在数据库中导入的csv文件列表。 因此,在第一步中,我在jsp页面中显示文件的名称,然后我等待用户选择文件导入它的内容或忽略它。

当用户确认他的回复时,我需要传递用户选择将其导入控制器的文件列表。

我想到了这一点:我在隐藏字段中设置包含文件列表的列表,然后我将从表单提交中将其恢复为控制器操作。但是在控制器中,它被读取为字符串变量,我无法从中提取数据。

<g:hiddenField id="list_file_notimported" name="list_file_notimported" value="${list_file_notimported}" />
<table>
      <g:findAll in="${list_file_notimported}" expr="1" >
                  <tr>
                  <td></td>
                  <td>${it.code}</td>
                  <td>${it.name}</td>
                  <td><g:radio id="group_${it.id}" name="group_${it.id}" value="import" checked="${false}"  /></td>
                  <td><g:radio id="group_${it.id}" name="group_${it.id}" value="ignore" checked="${false}"  /></td>
                   </tr>                    
                 </g:findAll></table>

请问好吗?

感谢。

1 个答案:

答案 0 :(得分:0)

此示例适用于Grails 2.4.3:

在控制器中,定义index操作以返回模型,并定义selection操作以计算在gsp中选择的文件列表:

class FileListController {

    def index() { 
        [ list_file_notimported : [ 'a.csv', 'b.csv', 'c.csv', 'd.csv'] ]
    }

    def selection() {
        def selectedfiles = []
        params.keySet().each { String key ->
            if (key.startsWith("group_") && key.endsWith(".csv") && params[key] == "import") {
                selectedfiles << key.substring(6)
            }
        }
        render(selectedfiles)
    }

}

在视图中,为选择创建一个表单:

 <g:form action="selection" method="get">
 <table>
    <tr><th>Name</th><th>Import</th><th>Ignore</th></tr>
    <g:each var="it" in="${list_file_notimported}" >
        <tr>
            <td>${it}</td>
            <td><g:radio name="group_${it}" value="import"/></td>
            <td><g:radio name="group_${it}" value="ignore" checked="true"/></td>
        </tr>
    </g:each>                    
 </table>
 <g:actionSubmit value="selection"/>
 </g:form>