-1

インスタンス変数 statisticsCurrency を持つ EquityStatisticsSet 型の unmodifiableSet を反復処理しています。反復中に次のエラーが発生します プロパティ 'statisticsCurrency' が java.util.Collections$UnmodifiableSet 型で見つかりません。

私はどこで間違っているのですか?助けてください。

以下はxhtmlとjavaファイルです。

.xhtml ファイル:

<p:dataTable id="equityStatisticsTable"
             value="#{commonStockController.equityStatistics}"
             var="equityStatistics">

  <p:column headerText="#{res.business_equity_statistics_statisticsCurrency_Label}">
    <gs:textInput
     inputName="business_equity_statistics_statisticsCurrency"
     inputValue="#{equityStatistics.statisticsCurrency}" />
   </p:column>

ジャバコード:

 public Set<GSEquityStatistics> getEquityStatistics(){
      return new HashSet<GSEquityStatistics>(commonStock.getAllStatistics());
     }

 public Set<GSEquityStatistics> getAllStatistics() {
      return Collections.unmodifiableSet(equityStatisticsSet);
    }

例外:

javax.servlet.ServletException: /content/business/security/commonStock.xhtml @166,64 
inputValue="#{equityStatistics.statisticsCurrency}": Property 'statisticsCurrency' not found on type java.util.Collections$UnmodifiableSet
 javax.faces.webapp.FacesServlet.service(FacesServlet.java:606)
 org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.doFilterInternal(OpenEntityManagerInViewFilter.java:147)
 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
4

1 に答える 1

1

今後の JSF 2.2 まで、コンポーネントはインターフェースUIDataをサポートしません。、、、などSetのみをサポートします。JSF 2.2 に従って、だけでなく もカバーする が追加されます。DataModelListObject[]ResultSetCollectionListSet

現在の最善の策は、任意のメソッドを呼び出す新しい EL 2.2 機能を使用しSetて、を配列に変換することです。Set#toArray()

<p:dataTable ... value="#{commonStockController.equityStatistics.toArray()}">

ただし、これはtoArray()基本的にすべての反復で呼び出されるため、かなりコストがかかります。内部ではtoArray()、全体を反復処理してSet配列を作成します。「バッキングアレイ」はありません。これは、配列またはのように O(1) ではなく、O(n^2) の複雑さになりArrayListます。事前に配列またはモデルに変換できない場合List(ゲッターではありません!)、<c:set>一度評価してリクエストスコープに保存することをお勧めします。

<c:set var="equityStatistics" value="#{commonStockController.equityStatistics.toArray()}" scope="request" />
<p:dataTable ... value="#{equityStatistics}">
于 2013-04-20T21:38:19.290 に答える