javax.faces.view.facelets.FaceletException:Error Parsing /my.xhtml:Error Traced [line:42]前缀" f"对于元素" f:facet"不受约束

时间:2012-03-08 10:28:51

标签: jsf facelets xml-namespaces prefix

我想创建一个可以将数据从数据库显示到JSF页面的表。我找到了这段代码:

<h:dataTable value="#{bookStore.items}" var="store">
  <h:column>
    <f:facet name="header">
      <h:outputText  value="#{msg.storeNameLabel}"/>
    </f:facet>
    <h:outputText value="#{store.name}"/>
  </h:column>
  <h:column>
    <f:facet name="header">
      Subject
    </f:facet>
    <h:outputText value="#{store.subject}"/>
  </h:column>
  <h:column>
    <f:facet name="header">
      <h:outputText  value="#{msg.storePriceLabel}"/>
    </f:facet>
    <h:outputText value="#{store.price}"/>
  </h:column>
</h:dataTable> 

当我使用此代码时,我在Netbeans中收到此错误消息:

  

javax.faces.view.facelets.FaceletException:Error Parsing /my.xhtml:Error Traced [line:42]元素“f:facet”的前缀“f”未绑定

如果我将f标记替换为h标记,它会起作用吗?或者我是否必须包含f标记库?

3 个答案:

答案 0 :(得分:16)

您必须为f前缀添加正确的taglib。

以下是JSF 2.2 Facelet页面的示例:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
      xmlns:h="http://xmlns.jcp.org/jsf/html"
      xmlns:f="http://xmlns.jcp.org/jsf/core">

...
</html>

如果您仍然使用JSF 2.0 / 2.1,请在XML命名空间中使用java.sun.com域而不是xmlns.jcp.org域。

我建议您阅读JSF教程,您可以在our JSF wiki page中找到链接。

答案 1 :(得分:2)

f替换h将无效,因为没有h:facet(在JSF html taglib中可能会分配给h前缀) 。您必须包含适当的taglib(JSF核心)并将其分配给f前缀。

答案 2 :(得分:0)

包含taglib。 <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>