2012-03-08 105 views
3

我想创建表将数据从数据库显示到JSF页面。我发现这个代码:javax.faces.view.facelets.FaceletException:解析/my.xhtml时出错:错误跟踪[line:42]元素“f:facet”的前缀“f”未绑定

<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:错误解析/my.xhtml:错误追述[行:42]前缀“F”为元素“F:面”未绑定

如果我h标签更换f标签,是去上班?或者我必须包含f标签库?

回答

12

您必须为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命名空间xmlns.jcp.orgjava.sun.com域。

我推荐阅读JSF教程,你可以在our JSF wiki page找到链接。

2

fh更换将无法正常工作,因为没有h:facet(在JSF html标记库这很可能是被分配到h前缀)。您必须包含适当的taglib(JSF核心)并将其分配给f前缀。

0

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

+0

@downvoter请解释 – Vaandu 2012-03-08 12:03:31

+0

似乎不是这样做的jsf方式 – 2015-01-21 07:26:57

相关问题