“PrimeFaces未定义”错误

时间:2012-03-07 14:19:05

标签: javascript jsf-2 primefaces printing

我正在尝试使用PrimeFaces打印机功能进行打印。我创建了一个新的GlassFish 3 Java EE项目并添加了PrimeFaces 3.1.1 .jar文件。

我目前使用的代码如下:

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

  <h:head>
    <title>Facelet Title</title>
  </h:head>
  <h:body>
    <h:form>
      <h:outputText id="a" value="AA" />
      <h:commandLink id="btn" value="Print">
        <p:printer target="a" />
      </h:commandLink>
    </h:form>
  </h:body>
</html>

不幸的是,打印功能不起作用。相反,FireBug控制台显示以下错误:

  

未定义PrimeFaces

8 个答案:

答案 0 :(得分:15)

如果您没有头标记,则会收到该错误。

Primefaces需要头标记才能工作。

他们的常见问题解答见#2

http://primefaces.org/faq.html

答案 1 :(得分:5)

这是一个小缺陷,并在3.2中修复。最终;

http://code.google.com/p/primefaces/issues/detail?id=3670

答案 2 :(得分:4)

如果您不允许访问

,也会发生这种情况

$ {web应用} /javax.faces.resources / **

检查您的安全XML配置。

未定义Primefaces的JavaScript错误。

答案 3 :(得分:2)

试试这个......(如果这不起作用可能是一个错误 - 在问题跟踪器上打开一张票......)

<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:head>  

    </h:head>  

    <h:body>  
     <h:form>
      <h:commandButton id="btn" value="Print">
        <p:printer target="output" />
      </h:commandButton>
      <h:outputText id="output" value="PrimeFaces Rocks!" />

      <h:outputLink id="lnk" value="#">
          <p:printer target="image" />
          <h:outputText value="Print Image" />
      </h:outputLink>
      <p:graphicImage id="image" value="/images/nature1.jpg" />

      </h:form>   
    </h:body>  
</html>  

listen ... primefaces正在使用jqprint jquery插件....你可能最好在等待正式的primefaces响应时直接使用它...

答案 4 :(得分:1)

您需要添加PrimeFaces命名空间。

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

查看the PrimeFaces Getting Started guide

答案 5 :(得分:1)

如果我只在表单上使用p:calendar,我会遇到同样的问题。视图上的所有标签都是jsf / facelet标签。唯一的primefaces标签是日历。看起来好像将java脚本作为优化删除了吗?

如果我将更多标签添加为p:dataTable,则java脚本错误将消失,日历组件将起作用。也许这会指出你在哪里。作为一种解决方法,您可以在表单上使用render = false来获取p:dataTable。

答案 6 :(得分:0)

我有同样的问题。我在jsf页面的顶部添加了<!DOCTYPE html>标记并修复了它。

答案 7 :(得分:0)

我有同样的错误,在我自己的脚本中使用了PrimeFaces变量。

这是我所做的:

变量PrimeFaces在primefaces库的core.js中定义。

在浏览器中查看网页的来源(例如,使用Developer Tools / F12),并检查使用PrimeFaces var的脚本是否放在{{1}之后 }。如果不是这种情况,请将脚本移至源文件中的其他位置。例如。在core.js标记之前。