我正在尝试使用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?
答案 0 :(得分:2)
自JSF 2.0以来,JSP已被弃用,并由Facelets取代。所有与PrimeFaces&gt; 2.x兼容的JSF 2.0兼容组件库都不再具有JSP的taglib,但仅适用于Facelets。
JSP根本不会识别您放在JSP文件中的<html xmlns:p="http://primefaces.org/ui">
。 XML名称空间上的JSF标记库仅在Facelets中起作用。
Forget JSP. Concentrate on Facelets.
回到您的Facelets问题的空白页面,确保您有一个<h:head>
而不是<head>
(否则JSF / PrimeFaces将无法自动包含必要的CSS / JS文件)并且您的请求URL与FacesServlet
中定义的web.xml
的URL模式匹配(否则FacesServlet
将不会被调用,因此无法将JSF转换为HTML;您已经通过右键单击确认了这一点,在webbrowser中查看源。
以下是完整的Facelets代码段/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>
如果FacesServlet
位于web.xml
的网址格式*.xhtml
中,则如下所示:
<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>
然后您可以通过网址中的相同文件名打开它,而无需摆弄*.jsf
,/faces/*
等虚拟网址:
http://localhost:8080/contextname/demo.xhtml
答案 1 :(得分:0)
我觉得你应该亲自使用JSF或facelet我从不尝试用primeface实现JSP,顺便提一下如果你可以在JSF或facelet中实现相同的结果,所以我建议继续使用JSF 2.0