【发布时间】:2014-04-24 22:54:52
【问题描述】:
h:dataTable 标签中的ui:repeat 有问题。我有一个带有字段名称的集合,另一个带有数据的集合。所以我通过索引匹配它们。当我加载页面时,抛出异常OutOfBoundsException。但是当我将filingCabinetManagerBean.filingCabinet.schema.fields.indexOf(schemaField) 放在ui:repeat 之外时,它会显示正确的索引。所以我试图拆分它并将ui:param 和c:set 声明为变量,但同样的问题。 cardDataactualCard 的属性不为空,也不为空,里面有 7 个项目,我已经调试过了。那么您知道可能是什么问题吗?
PS:当我将ui:repeat 更改为h:dataTable 时,它正在工作。最重要的是,在另一个 JSF 页面上使用了相同的结构并且它正在工作,只有一个区别 - 我从一个外部数据表中引用的卡中得到 cardData,所以它不是 Bean(dot) 属性等等, 但只有variable(dot) 等等。
有什么想法吗?谢谢您的帮助。 :)
<p:panel header="#{fileUploadBean.actualCard.id}">
<h:dataTable value="#{filingCabinetManagerBean.filingCabinet.schema.fields}" var="schemaField" style="vertical-align: top">
<h:column><h:outputText value="#{schemaField.fieldTitle}:" style="font-size: 20px;font-weight: bold"/></h:column>
<h:column>
<ul>
<ui:repeat value="#{fileUploadBean.actualCard.cardData.get(filingCabinetManagerBean.filingCabinet.schema.fields.indexOf(schemaField)).data}" var="data">
<li><h:outputText value="#{data.string}"/></li>
</ui:repeat>
</ul>
</h:column>
</h:dataTable>
【问题讨论】:
-
哪个 JSF 实现/版本?最新尝试?
在 Mojarra 中有许多错误,其中大部分应该已经在当前最新的 2.2.12 中消除。当前答案仅显示解决方法而不是解决方案。尽管如此,在 getter 中执行业务逻辑是一个坏主意。您最好重新设计您的控制器以准确预填充视图期望的模型,而不是让视图通过 getter 填充模型(这显然是低效的)。另见 a.o. stackoverflow.com/questions/2090033/…