【问题标题】:Spring Mvc display data from multiple Lists in JspSpring Mvc 在 Jsp 中显示来自多个 List 的数据
【发布时间】:2015-04-25 20:43:29
【问题描述】:

您好,我正在使用 Spring MVC,我正在尝试在 jsp 页面中显示一些来自多个列表的数据。我搜索并发现了一些类似的主题,但我无法实现我想要做的事情,而且变得更加困惑。 我的模型类包含如下内容:

private String BlaBla1;

private String BlaBla2;

private List<String> Alpha;

private List<String> Beta; 
.....
//getters setters

我想要的是在 jsp 中显示一个 table,其中包含来自这两个 ListsAlphaBeta ..) 一列有一个值。它们都有相同数量的值。 例如

<tr><td>Alpha.value1</td><td>Beta.value1</td></tr>
<tr><td>Alpha.value2</td><td>Beta.value2</td></tr>
......................................
<tr><td>Alpha.valueN</td><td>Beta.valueN</td></tr>

正如我在这里看到的rendering data in jsp using spring controllers and different classes

还有一些其他的例子,他们创建了类似的东西:List&lt;MyObjects&gt; objects 但是 MyObjects 模型总是有私有字符串 ... 并且 NOT 任何 List&lt;String&gt;..

我试图构建类似的东西

Map<String,List<String>> test = new HashMap<String,List<String>>();

然后

test.put("alfa", Alpha);
test.put("beta", Beta);

但我得到的只是使用

将它们显示在 2 行和单列中
<c:forEach var="testValue" items="${test}">
    <tr><td>${testValue.value}</td></tr>
</c:forEach>

请不要让我更改我的模型类,这是“不可能的”。 我看到某处说要使用 Collection,但我不知道该怎么做。

任何建议都会有用, 编码愉快!

【问题讨论】:

  • "但我得到的只是将它们显示在 N 行和单列中。"这是否意味着您现在正在显示所有正确的列表数据,但只是显示不正确,即在单个列中?这是怎么回事?
  • 老实说,不完全是..你是对的!我得到的是连续每个列表中的所有值..所以第 1 行中 Alpha 列表中的所有值和 Beta 列表中的所有值在第 2 行..所以不,它们没有正确显示!我只是不能像其他一样使用 ${testValue.Alpha}${testValue.Beta} List 上面的示例我正在编辑我的原始帖子(对不起)

标签: java spring-mvc arraylist foreach model


【解决方案1】:
model.addObject("alphaList", alpha);
model.addObject("betaList", beta);

在jsp中:

<c:forEach var="listItem" items="${alphaList}" varStatus="theCount" >
    <tr><td>${listItem}</td><td>${betaList[theCount.index]}</td></tr>
</c:forEach>

注意:${theCount.index} 以 0 开头 ${theCount.count} 以 1 开头。

所以基本上你可以使用计数来遍历第二个列表。

【讨论】:

  • 感谢@Nikhil 并感谢 Serge Ballesta 的回答!
【解决方案2】:

您只需正常迭代Alpha 列表...但使用&lt;c:foreach &gt; 标记的varStatus 属性。这个varStatus (除其他外)有一个属性index,它是迭代的索引以及显示Beta 列表中相应元素所需的所有内容。代码示例:

<c:forEach var="alphaVal" items="${Alpha}" varStatus="status">
    <tr><td>${alphaVal}</td><td>${Beta[status.index]}</td></tr>
</c:forEach>

【讨论】:

  • 哦,您好,感谢您的发帖。我也会尝试,但我有一个小问题..我在哪里将 Beta 放在控制器中?我的意思是我应该使用 model.addAttribute("..", Alpha);和 model.addAttribute("..", Beta);或者我应该把它们放在另一个 List 或 Map-HashMap 中吗?我尝试了很多东西,但我迷路了..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-08
  • 1970-01-01
  • 1970-01-01
  • 2017-11-20
  • 2012-08-30
相关资源
最近更新 更多