【问题标题】:How to use PrimeFaces 3.2 in Eclipse Indigo SR2?如何在 Eclipse Indigo SR2 中使用 PrimeFaces 3.2?
【发布时间】:2012-10-18 12:14:42
【问题描述】:

我正在尝试使用 PrimeFaces 3.2。我正在使用 Eclipse Indigo SR2。我正在使用 PrimeFaces 标签创建一个 JSP 页面。标准的<h:commandButton> 有效,但<p:commandButton> 无效。

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="f"  uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h"  uri="http://java.sun.com/jsf/html"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html  xmlns:p="http://primefaces.org/ui">
<head>

</head>
<body>
<f:view>
        <h:form>
        <h:commandButton value="Click"></h:commandButton>
        <p:commandButton value="shfgldjfkl"></p:commandButton>
        </h:form>
</f:view>
</body>
</html>

我的输出是这样的:

当我在 Indigo Service Release 2 中获取 JSF XHTML 页面时,我的代码没有运行我的页面是空白的。

如何使用 PrimeFaces 3.2?

【问题讨论】:

  • 看看这个:mkyong.com/jsf2/primefaces/primefaces-hello-world-example 你可以将 jars 放在你的 lib 文件夹中而不是 maven 并将它们添加到你的构建路径中
  • 截屏时,请尽量只裁剪出相关部分。您的问题中的唯一按钮周围有一个巨大的空白区域,这很荒谬。

标签: eclipse jsf-2 primefaces


【解决方案1】:

JSP 自 JSF 2.0 起被弃用,并由 Facelets 接替。所有与 JSF 2.0 兼容的组件库(如 PrimeFaces >2.x)都不再有用于 JSP 的标记库,而仅用于 Facelets。

您放在JSP 文件中的&lt;html xmlns:p="http://primefaces.org/ui"&gt; 根本不会被JSP 识别。 XML 命名空间上的 JSF 标记库仅适用于 Facelets。

Forget JSP. Concentrate on Facelets.

回到空白页面的 Facelets 问题,确保您使用的是 &lt;h:head&gt; 而不是 &lt;head&gt;(否则 JSF/PrimeFaces 将无法自动包含必要的 CSS/JS 文件)和您的请求 URL 与 web.xml 中定义的 FacesServlet 的 URL 模式匹配(否则将根本不会调用 FacesServlet,因此无法将 JSF 转换为 HTML;您已经通过右键单击确认了这一点, 在浏览器中查看源代码)。

这是完整的 Facelets sn-p /demo.xhtml

<!DOCTYPE html>
<html lang="en"
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui">
    <h:head>
        <title>PrimeFaces demo</title>
    </h:head>
    <h:body>
        <h:form>
            <p:commandButton value="submit" />
        </h:form>
    </h:body>
</html>

如果FacesServletweb.xml 中映射到*.xhtml 的URL 模式,如下所示:

<servlet>
    <servlet-name>facesServlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>facesServlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
</servlet-mapping>

然后你可以直接用 URL 中相同的文件名打开它,而不必摆弄像*.jsf/faces/* 等虚拟 URL:

http://localhost:8080/contextname/demo.xhtml

【讨论】:

    【解决方案2】:

    好吧,我认为您应该亲自使用 JSF 或 facelet 我从不尝试使用 primeface 实现 JSP,顺便说一下,如果您可以在 JSF 或 facelet 中获得相同的结果,为什么要实现 JSP,所以我建议继续使用 JSF 2.0

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多