Primefaces selectbooleancheckbox不在列中工作

时间:2012-04-30 23:15:49

标签: java jsf-2 primefaces

我正在开发一个小的单页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)

1 个答案:

答案 0 :(得分:4)

这表明您在一个webapp中混合了多个PrimeFaces版本,其中较旧的版本没有提到的方法在类加载中优先。

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