3

我正在 Eclipse 4.3 上使用 PrimeFaces 3.5 开发 JSF Web 应用程序。没有编译时或运行时错误,应用程序部署成功。但是,我无法在浏览器中获得所需的输出。PrimeFaces 组件不显示,而标准 JSF 组件显示。

我不确定我是否正确配置了所有内容。PrimeFaces JAR 至少在里面/WEB-INF/lib

在此处输入图像描述

PrimeFaces XML 命名空间被声明为xmlns:p="http:\\primefaces.org\ui"

在此处输入图像描述

我映射FacesServlet*.xhtml

在此处输入图像描述

这是完整的源代码login.xhtml

  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  <html xmlns="http://www.w3.org/1999/xhtml"
   xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:p=" http://primefaces.org/ui" >
        <h:body>  
<h:head ><title>Login Page !!</title></h:head>
 <h:form>  
<p:panel id="panel" header="Login Panel" style="margin-bottom:10px;">  

    <h:panelGrid columns="3">  
        <h:outputLabel  value="User Id:" />  
        <p:inputText id="id" value="loginBean.id" required="true" requiredMessage="ID required"/>  
        <p:message for="id" />

        <p:outputLabel value="User Name:" />  
        <p:inputText id="name" value="loginBean.name"  required="true" requiredMessage="Name required" />  
        <p:message for="name" />
    </h:panelGrid>  
</p:panel>  
<p:commandButton type="Submit" value="Submit" action="#" style="margin-right:20px;" />  

`

输出如下所示:

在此处输入图像描述

如您所见,<h:outputText>完成了它的工作,但没有<p:xxx>出现。这是如何引起的,我该如何解决?

4

4 回答 4

7

这不是对这个问题的直接回答,但与它有关。我想分享我对“PrimeFaces 标签未呈现”问题的经验。我正在 WildFly 上开发 JSF 2.2 应用程序,这是我的 index.xhtml:

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:p="http://primefaces.org/ui">

<h:body>
    <h:form>
        <p:editor value="#{mDb.newMessage.content}"></p:editor>
    </h:form>
</h:body>
</html>

当应用程序运行时,编辑器不会出现,这对我来说很奇怪,因为 PrimeFaces 在项目中配置正确。

我无意中发现了问题的原因。index.xhtml中没有h:head标签。当我放置 head 标签时,PrimeFaces 组件渲染成功!

我希望这可以帮助某人。

于 2014-05-13T23:12:59.707 回答
5

至于您的 PrimeFaces 组件未呈现的具体问题的原因,根据屏幕截图,您在 PrimeFaces taglib URI 中有一个前导空格:

xmlns:p=" http://primefaces.org/ui"

这很重要,因此是错误的。摆脱它:

xmlns:p="http://primefaces.org/ui"

这样,必须解析 PrimeFaces 组件并出现在 HTML 输出中。

对于其余部分,我强烈建议您先阅读理智的 JSF2 教程。你犯了几个概念上的错误,一个体面的 Hello World 示例已经涵盖了这些错误。从我们的 JSF wiki 页面开始。然而,这些错误没有这个“空白页”作为结果。它们会导致不同的问题(例如 CSS/JS 无法正常工作和表单提交无法正常工作)。如果您仍然坚持这一点,那么您基本上应该问一个新问题。

于 2013-08-27T10:51:37.327 回答
0

1.
当您从 JSF 组件中引用托管 Bean 属性时,请对 JSF EL 语句使用正确的语法。

#{bean_name.property}

在您的代码中,您忘记提供#{}.
例如,在login.xhtml中的第 15行使用:

<h:inputText id="id" value="#{loginBean.id}" required="true" requiredMessage="ID required"/>

2.
你在<h:head>里面<h:body>。这不是一个好习惯。
保持<h:head>在外面<h:body>
实际结构是:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:p="http://primefaces.org/ui">

     <h:head>
        <title></title>
     <h:head>   

     <h:body>
       <!-- Your Code -->
     </h:body>
</html>

3.
您可能在 ManagedBean LoginBean.java 类中遇到异常
请发布代码而不是屏幕截图。

于 2013-08-27T10:35:11.837 回答
-3

如果您构建您的项目 mit maven,请记住将 primefaces lib 的依赖项包含到 pom.xml

此致

于 2016-03-23T10:42:58.703 回答