我正在尝试迭代List>在我的JSF视图上使用ui:repeat标签。它看起来像这样:
<h:form>
<ui:repeat value="#{myController.currentEntry.pages}" var="page" varStatus="pageStatus">
<p:fieldset rendered="#{myController.currentEntryPage == pageStatus.index}">
<ui:repeat value="#{page}" var="item" varStatus="itemStatus">
<h:outputText value="#{itemStatus.index + 1}. #{item.anotherClass.text}" />
</ui:repeat>
<p:fieldset>
</ui:repeat>
</h:form>
我的类Item位于模型包中,包含对AnotherClass对象的引用,也包含在models包中。我已经检查了调试器,并且在返回到我的视图的重定向之前,myController.currentEntry.pages已经很好地形成了。
但是我收到以下错误:
javax.servlet.ServletException: /my_view.xhtml @10,109 value="#{itemStatus.index + 1}. #{item.anotherClass.text}": Property 'anotherClass' not readable on type models.AnotherClass
javax.faces.webapp.FacesServlet.service(FacesServlet.java:422)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
filters.Auth.doFilter(Auth.java:19)
filters.Encoding.doFilter(Encoding.java:28)
这是什么一回事? JSF如何管理将item映射到item.anotherClass?我知道ui:重复充满了错误,但我发现的没有一个指向这种问题。
有没有其他方法可以实现我想要做的事情?我的项目使用Primefaces。它接近结束,甚至更接近交付截止日期,因此不能选择转换到另一个库。
编辑: 我已经切换到一个更优雅的解决方案,不需要我迭代整个矩阵:
<ui:repeat value="#{myController.currentEntryPageItems}" var="item" varStatus="itemStatus">
getCurrentEntryPageItems()是一个返回myController.currentEntry.pages.get(myController.currentEntryPage)
的方法。
我仍然想知道是否可以用ui完成2d迭代:重复所以我将保持问题开放。