【发布时间】:2011-08-09 12:15:28
【问题描述】:
完整上下文:我正在尝试使用 grails 应用程序处理多个文件。我将显示的代码来自后处理页面,其中提供了有关已处理文件的信息。
我最初的感觉是使用这样的代码:
<table>
<tr>
<th>Parsed from Excel:</th>
<th>Uploaded to DS:</th>
<th>File Name:</th>
<th>Size:</th>
</tr>
<tr>
<g:each in="${fileContents}" var="item">
<td>${item}</td>
</g:each>
<%--
<td>${fileContents.ExcelRows?.encodeAsHTML()}</td>
<td>${fileContents.policies?.encodeAsHTML()}</td>
<td>${fileContents.originalFileName?.encodeAsHTML()}</td>
<td>${fileContents.Size?.encodeAsHTML()}</td>
--%>
</tr>
</table>
现在,我不明白为什么<g:each 循环中显示的内容总是报告key=value,例如我在一个输出案例中收到的ExcelRows=14。
当我切换 cmets(注意正在使用的 <%-- 标记)时,它的工作方式完全符合预期。从我的“ExcelRows”列中,我只得到“14”。我认为<g:each 循环应该做同样的事情有什么问题?直觉上它归结为For each item in fileContents
display item。
我的控制器代码:
def processFile = {
def uploadedFile = request.getFile('excelFile')
//...剪掉了
def fileContents = [
ExcelRows:"${ods.numberOfRows}",
policies:"${ods.numberOfPolicies}",
originalFileName: "${ods.originalFilename}",
Size:"${ods.size}"
]
[fileContents:fileContents]
}
【问题讨论】:
-
你能发布你的控制器代码吗?将模型“fileContents”返回到您的视图?!
-
@Arthur Neves 添加了相关控制器代码
-
所以,您的目标文件内容是地图而不是列表!所以这就是为什么显示 key=value
-
@Arthur,我应该如何在不嵌入 groovy/Java 代码的 gsp-land 中迭代地图?
-
Rob Hruska 的第二个建议怎么样?
${item?.encodeAsHTML()}