2

我正在开发一个小的单页网络应用程序。在其中,我有一个数据表,其中包含一个布尔值列。我想尝试将其显示为复选框。但是,它在渲染时失败。我猜这是需要渲染对象并且复选框是布尔值并因此失败的事实。虽然这看起来像一个错误,除非我在某处遗漏了标记。Primefaces 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

这表明您在单个 web 应用程序中混合了多个 PrimeFaces 版本,其中根本没有提到的方法的旧版本在类加载中具有优先权。

清理你的 webapp 的运行时类路径。您应该只有一个版本的 PrimeFaces。

于 2012-04-30T23:20:03.520 回答