JSF 2.0无法从primefaces渲染对话框

最近我对primefaces组件有很多问题,我知道为什么。 我使用glassfishV3.0,我的primefaces版本是2.2.1我现在的问题是,当我点击一个表格行时,我不能使p:的primefaces对话框呈现。 我完全按照他们的例子做了almos: http : //www.primefaces.org/showcase/ui/datatableComplex.jsf

我认为我的问题与某些配置有关,因为我也遇到了其他主要组件的麻烦。 有人可以帮我一把,并告诉我我缺少什么能够使用像这样的primefaces组件没有问题吗? 这是代码:

JSF:

      

管理豆

 @ManagedBean @ViewScoped public class ResultsController implements Serializable{ @EJB private ISearchEJB searchEJB; private Garbage garbage; public List getAllGarbage() { List tmpGarbage = new ArrayList(); for(Garbage g :searchEJB.findAllGarbage()) { tmpGarbage.add(g); } return tmpGarbage; } public Garbage getGarbage() { return garbage; } public void setGarbage(Garbage garbage) { this.garbage = garbage; } 

以前的JSF是我在这个模板中使用的复合页面

     title  PrimeFaces.widget.Uploader.prototype._createPostParams = function() { var b = {}; b[PrimeFaces.PARTIAL_REQUEST_PARAM] = true; b[PrimeFaces.PARTIAL_PROCESS_PARAM] = this.id; b[PrimeFaces.PARTIAL_SOURCE_PARAM] = this.id; b[PrimeFaces.VIEW_STATE] = PrimeFaces.ajax.AjaxUtils.encodeViewState(); if (this.cfg.update) { b[PrimeFaces.PARTIAL_UPDATE_PARAM] = this.cfg.update } var a = PrimeFaces.getCookie("JSESSIONID"); if (this.cfg.script.indexOf("jsessionid") == -1) { paramIndex = this.cfg.script.indexOf('?'); if (paramIndex != -1) { this.cfg.script = this.cfg.script.substring(0, paramIndex) + ";jsessionid=" + a + this.cfg.script.substring(paramIndex); } else { this.cfg.script = this.cfg.script + ";jsessionid=" + a; } } b['cid'] = "#{javax.enterprise.context.conversation.id}"; return b; }; PrimeFaces.widget.Uploader.prototype.createPostParams = PrimeFaces.widget.Uploader.prototype._createPostParams;              

我的web.xml配置

    Faces Servlet javax.faces.webapp.FacesServlet 1   Faces Servlet /pages/*   pages/index.jsp   Resource Servlet org.primefaces.resource.ResourceServlet   Resource Servlet /primefaces_resource/*   PrimeFaces FileUpload Filter org.primefaces.webapp.filter.FileUploadFilter    PrimeFaces FileUpload Filter Faces Servlet  

在上面的表格中,只有sortBy函数和p:对话框不起作用。 这是刷新页面时在eclipse控制台上显示的消息:

严重:第1:61行没有可行的替代角色’;’

我不明白这意味着什么,我认为我有一些配置问题而不是语法错误。 如果有人能帮我解决这个问题,我真的很开心。

嗯,我创建了一个简化版本的代码,我的工作完美无缺。 每次我点击该行,我的对话框都会弹出。 尝试在新项目上运行此代码,看看它是否有效。

                     

这是我的豆子

 /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package com.test; import java.util.ArrayList; import java.util.List; import javax.annotation.PostConstruct; import javax.faces.bean.ManagedBean; import javax.faces.bean.ViewScoped; /** * * @author KingdomHeart */ @ManagedBean @ViewScoped public class MyBean { private List myList; private String selectedResult; public MyBean() { } @PostConstruct public void init(){ myList = new ArrayList(); myList.add("Test1"); myList.add("Test2"); myList.add("Test3"); myList.add("Test4"); myList.add("Test5"); } public List getMyList() { return myList; } public void setMyList(List myList) { this.myList = myList; } public String getSelectedResult() { return selectedResult; } public void setSelectedResult(String selectedResult) { this.selectedResult = selectedResult; } } 

由sfrj更新 在此处输入图像描述

如你所见,我的行中有不止一行是黄色的,这并不是那样的。 selectionMode =“single”无法正常工作。

哈利更新

以下是将Date类型转换为String的方法

 public String formatDate(Date date) { if (date != null) { SimpleDateFormat sdf = new SimpleDateFormat("MMM dd yyyy"); return sdf.format(date); } return null; } 

然后你的JSF会是这样的

 h:outputText value="#{resultsController.formatDate(garbage.uploadDate)}" /> 

由sfrj更新2 在此处输入图像描述

这是全新的JSF页面: