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>

models パッケージにある私のクラス Item には、モデル パッケージにもある AnotherClass のオブジェクトへの参照が含まれています。デバッガーをチェックインしましたが、ビューへのリダイレクトが返される直前に、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.anotherClassにどのようにマップしていますか? ui:repeat がバグでいっぱいであることは知っていますが、この種の問題を指摘するものはありませんでした。

私がやろうとしていることを達成する他の方法はありますか? 私のプロジェクトでは Primefaces を使用しています。終わりに近づいており、さらに配信期限が近づいているため、別のライブラリに切り替えることはできません.

編集:マトリックス全体を反復する必要のない、よりエレガントなソリューションに切り替えました:

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

getCurrentEntryPageItems() は、 を返すメソッドですmyController.currentEntry.pages.get(myController.currentEntryPage)

2D 反復が ui:repeat で実行できるかどうかを知りたいので、質問を開いたままにします。

4

0 に答える 0