【发布时间】:2013-01-08 14:34:27
【问题描述】:
我正在尝试将二维数组显示为页面中的表格。我知道这听起来好像我在重新发明轮子,但我必须处理的对象是一个自定义类型的二维数组,它也必须以特定方式呈现(始终相同)。
棘手的部分是这个二维数组在它的一些索引中可以有空值。在这些情况下,必须呈现特定的“不可用”单元格。 设计团队已经定义了表格结构(是的...<table><tr>和<td>)并被客户接受。
我尝试使用<c:forEach/>,但由于 JSTL 和 JSF 标记的管理顺序,在尝试使其工作时遇到了麻烦。处理 JSF 标记时会出现一些问题,包括值过时和缺少组件。
当<c:forEach/> 被调用时,数组(@ViewScoped bean 的属性)始终为空,即使我强制创建数组:
public MyObject[][] getMatrix() {
if(loadedMatrix == null)
initializeMatrix();
return loadedMatrix.getTable();
}
initializeMatrix() 方法从数据库中获取相应的数据并调用创建二维数组的逻辑,使loadedMatrix 在创建后引用它(所有这些都有效,没有异常或错误)。当initializeMatrix 结束时,loadedMatrix 仍然是null。
我选择了嵌套的<c:forEach/> 选项,因为我需要管理表的索引以了解要呈现的内容(如果对象为空,可用性标志设置为 false 或者是否可以正常呈现),但就目前而言,我认为最安全的解决方案是创建自定义组件。
我的问题是:在知道我正在渲染的索引的同时,我有哪些替代方法可以将 2D 数组的内容渲染为表格?
提前致谢
【问题讨论】:
标签: jsf-2 multidimensional-array