我有一个将在数据库中导入的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>
请问好吗?
感谢。
答案 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>