我正在开发一个小的单页Web应用程序。在其中,我有一个数据表,其中包含一个布尔值的列。我想尝试将其显示为复选框。然而,它在渲染时失败了。我猜这是一个事实,对象需要被渲染,复选框是一个布尔值,因此失败。虽然这看起来像一个bug,除非我在某个地方错过了标记。 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)
答案 0 :(得分:4)
这表明您在一个webapp中混合了多个PrimeFaces版本,其中较旧的版本没有提到的方法在类加载中优先。
清理webapp的运行时类路径。你应该只有一个版本的PrimeFaces。