1

我正在尝试使用 ui:repeat 标记在我的 JSF 视图上迭代 List>。它看起来像这样:

<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>

我的类项目,位于模型包中,包含对另一个类对象的引用,也在模型包中。我已经签入调试器,并且在返回到我的视图的重定向之前,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:repeat 充满了错误,但我发现没有一个指向这种问题。

有没有其他方法可以实现我想要做的事情?我的项目使用 Primefaces。它已接近尾声,甚至更接近交付期限,因此切换到另一个库不是一种选择。

编辑:我已经切换到一个更优雅的解决方案,不需要我迭代整个矩阵:

<ui:repeat value="#{myController.currentEntryPageItems}" var="item" varStatus="itemStatus">

getCurrentEntryPageItems() 是一个返回的方法myController.currentEntry.pages.get(myController.currentEntryPage)

我仍然想知道是否可以使用 ui:repeat 完成 2d 迭代,所以我将保留这个问题。

4

0 回答 0