【问题标题】:Primefaces datatable multiple checkbox not workingPrimefaces数据表多个复选框不起作用
【发布时间】:2012-12-14 23:45:02
【问题描述】:

最近,我一直在做一个使用 Primefaces UI 的项目。要求之一是要有一个数据表,用户可以在其中选择多行。我已经实现了类似于:http://www.primefaces.org/showcase-labs/ui/datatableRowSelectionRadioCheckbox.jsf,但它没有工作。

起初,我认为我的代码有问题,但是当我从 primefaces 复制示例时,它也不起作用。所以我想知道我的技术堆栈是否有问题:JavaEE6、Glassfish 3.1.2.2、mojarra(javax.faces) 2.1.16、primefaces 3.4.2。

至于示例代码,我完全是从上面给出的链接中复制的。

请注意,单选也不起作用。

【问题讨论】:

  • 至少堆栈没有问题。请注意,GlassFish 实现了 JSF,因此如果您自己添加了它,那么它确实不起作用。你的堆栈基本上是 GlassFish 3.1.2.2 + PrimeFaces 3.4.2。
  • 抱歉,JSF 2.1 不包含在我的最终耳朵项目中。我用mojarra代替了它。所以要解决这个问题,你的意思是我应该删除对 mojarra 的依赖?我会试试的。
  • 不幸的是,Mojarra 无法替换 JSF 2.1。 “问题”是 Mojarra 是 JSF 2.1。 GlassFish 已经提供了 JSF(恰好是 Mojarra)。如果您的 EAR 中没有任何内容(只有一个 PrimeFaces 库),那么没关系。
  • @ArjanTijms,在删除对 mojarra 的依赖并且只保留 primefaces jar 之后,选择仍然不起作用。而且经过进一步测试,单选也不起作用。
  • 这取决于“删除对 Mojarra 的依赖”的意思。如果您的意思是从 GlassFish 中移除 Mojarra 罐子,那么这显然不好。如果您的意思是删除代码中对 Mojarra 的引用,那么这又取决于您的意思。由于 PrimeFaces 在 JSF 实现之上工作,而 Mojarra 是您的 JSF 实现,因此您无法真正删除对 JSF 的依赖,只剩下 PrimeFaces 依赖。如果你以某种方式使用了 Mojarra 私有包,那么当然,删除它们。但目前我没有看到与该问题的联系。

标签: jsf jsf-2 primefaces mojarra


【解决方案1】:

我通过以下方式解决了这个问题:

1.) 从头开始​​创建一个新项目并测试我的堆栈是否真的有效。正如 Arjan Tijms 所说,即使您向最新版本的 mojarra 添加依赖项,它也会被忽略。尝试在 Glassfish 中部署新应用程序,您会注意到以下行:

[#|2012-12-31T11:19:15.958+0800|INFO|glassfish3.1.2|javax.enterprise.resource.webcontainer.jsf.config|_ThreadID=39;_ThreadName=Thread-2;|Initializing Mojarra 2.1.6 (SNAPSHOT 20111206) for context '/web-demo-0.0.1-SNAPSHOT'|#]

2.) 我的 bean 是 SessionScoped,因此它是可序列化的,但我忘记将注入的 ResourceBundle 和 FacesContext 标记为瞬态。 (我的主要问题)。

3.) 对于带有弹出对话框的 primefaces 选择示例,请确保操作按钮以对话框元素 ID 为目标进行更新。

4.) 确保在 Eclipse 项目以及您拥有的项目依赖项上运行 maven clean。例如,我有一个 web-commons,我在其中定义了对 mojarra 的依赖,虽然我一直在清理主项目,但我没有注意到 commons 依赖将 mojarra jar 添加到最后一个耳朵。

仅此而已,我的项目现在可以正常运行 :-) 谢谢。

【讨论】:

    猜你喜欢
    • 2013-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-05
    • 2014-08-30
    • 2012-11-19
    • 1970-01-01
    • 2012-08-16
    相关资源
    最近更新 更多