Java EE6 / CDI JSF2 Primefaces 3.3.1 . 我创建了一个搜索页面,其中包含一些级联下拉列表,用于生成搜索结果表格如果我使用jsf:
<h:dataTable var="_employeeVList" value="#{employeeVProducer.employeeVList}" rendered="#{not empty employeeVProducer.employeeVList}">
<f:facet name="header">
Employee Search Results
</f:facet>
<h:column>
<f:facet name="header">Area</f:facet>
<h:outputText value="#{_employeeVList.areaName}" />
</h:column>
...
</h:dataTable>
该表使用输出呈现,html看起来很正常 . 但是当我改为primefaces时:
<p:dataTable var="_employeeVList" value="#{employeeVProducer.employeeVList}" rendered="#{not empty employeeVProducer.employeeVList}">
<f:facet name="header">
Employee Search Results
</f:facet>
<p:column>
<f:facet name="header">Area</f:facet>
<h:outputText value="#{_employeeVList.areaName}" />
</p:column>
...
</p:dataTable>
表格不显示 . 当我用firebug查看源代码时,我发现html有些奇怪:
<table id="searchForm:results">
<tbody>
<tr>
<td>
<p:datatable rendered="true" value="[com.raytheon.myPkg.EmployeeV@f486, com.raytheon.myPkg.EmployeeV@88fe, com.raytheon.myPkg.EmployeeV@adaf,
...
com.raytheon.myPkg.EmployeeV@6a5b]"
var="_employeeVList">
<p:column></p:column>
<p:column></p:column>
...
</p:datatable></td>
</tr>
</tbody>
</table>
对象位于标签标签中,列为空 . 在页面的其他地方,我正在使用p:panelGrid,它包含下拉列表并正确显示 .
我在我的默认模板页面中有h:head和h:body .
该表由有状态请求范围的bean支持 .
我没有使用任何外部JavaScript .
我究竟做错了什么?
2 回答
因此,
<p:xxx>
标签根本没有被解析为JSF标签,并且在生成的HTML输出中显得简单 . 这可能有以下一个或多个原因:p:
XML命名空间,或者您使用了错误的命名空间URI . 它应该是:一个 . 在webapp的
/WEB-INF/lib
文件夹中删除primefaces.jar
.湾确保您的依赖管理器(例如Maven)已配置为将PrimeFaces添加到项目并将其添加到运行时
/WEB-INF/lib
文件夹要向BalusC的列表添加另一个原因:
如果你没有将servlet URL映射添加到你的URL,你将得到奇怪的输出,JSF将不会解析你的XHTML页面!
例如,如果您在web.xml中具有以下URL映射:
你应该使用
/faces/yourpage.xhtml
来正确渲染JSF的输出 .如果您使用
/yourpage.xhtml
,您将看到奇怪的输出 .