最近,我一直在做一个使用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.
对于示例代码,我完全复制了上面给出的链接。
我能够解决这个问题:
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标记为transient。(我的主要问题)。
3)。对于带有弹出对话框的primefaces选择示例,请确保动作按钮的目标是用于更新的对话框元素id。
4)。确保在eclipse项目以及您拥有的项目依赖项上干净地运行maven。例如,我有一个web-commons,我定义了对mojarra的依赖,尽管我一直在清理主项目,但我没有注意到commons依赖将mojarra jar添加到最终ear。
这就是所有和我的项目现在工作正常:-)谢谢。