【问题标题】:Primefaces selectbooleancheckbox not working in a columnPrimefaces selectbooleancheckbox不在列中工作
【发布时间】:2012-04-30 23:15:49
【问题描述】:

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

【问题讨论】:

    标签: java jsf-2 primefaces


    【解决方案1】:

    这表明您在单个 web 应用中混合了多个 PrimeFaces 版本,其中完全没有上述方法的旧版本在类加载中具有优先权。

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

    【讨论】:

    • 问:您是如何通过查看堆栈来发现这一点的?
    • 我看着它说“好吧,我遇到了一个错误”。所以我猜这是多个罐子和类加载器搞砸的副作用。有什么地方可以读到这个吗?顺便谢谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 2013-02-08
    • 1970-01-01
    • 1970-01-01
    • 2018-02-04
    • 2015-05-15
    相关资源
    最近更新 更多