2

小さな1ページのWebアプリを開発しています。その中に、ブール値の列を含むデータテーブルがあります。チェックボックスとして表示したかったのです。ただし、レンダリングすると失敗します。オブジェクトをレンダリングする必要があり、チェックボックスがブール値であるため失敗するという事実だと思います。どこかにマークアップがない限り、これはバグのように見えますが。プライムフェイス 3.2.1、GF 3.1.1、JDK 7。

<p:column>
     <f:facet name="header">With Login
     </f:facet>
     <p:selectBooleanCheckbox value="#{server.withLogin}" onLabel="Login" offLabel="Without Login"/>
 </p:column>

エラースタックはこちら

java.lang.NoSuchMethodError: org.primefaces.util.ComponentUtils.getValueToRender(Ljavax/faces/context/FacesContext;Ljavax/faces/component/UIComponent;)Ljava/lang/String;
at org.primefaces.component.selectbooleancheckbox.SelectBooleanCheckboxRenderer.encodeMarkup(SelectBooleanCheckboxRenderer.java:60)
at org.primefaces.component.selectbooleancheckbox.SelectBooleanCheckboxRenderer.encodeEnd(SelectBooleanCheckboxRenderer.java:53)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1763)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1759)
at org.primefaces.component.datatable.DataTableRenderer.encodeRegularCell(DataTableRenderer.java:571)
at org.primefaces.component.datatable.DataTableRenderer.encodeRow(DataTableRenderer.java:531)
4

1 に答える 1

4

これは、1 つの Web アプリケーションに複数の PrimeFaces バージョンが混在していて、前述のメソッドをまったく持たない古いバージョンがクラスローディングで優先されたことを示しています。

Web アプリケーションのランタイム クラスパスをクリーンアップします。PrimeFaces のバージョンは 1 つだけにする必要があります。

于 2012-04-30T23:20:03.520 に答える