为视图配置的 ICEfaces /index.xhtml 但 h:head 和 h:body 组件是必需的
ICEfaces configured for view /index.xhtml but h:head and h:body components are required
我正在尝试将 ICEFaces ACE 组件库集成到我的项目中。我有以下观点:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<head>
<h:outputStylesheet library="org.icefaces.component.skins"
name="rime.css" />
<f:loadBundle basename="resources.application" var="msg" />
<title>
<h:outputText value="#{msg.templateTitle}" />
</title>
</head>
<body>
<div id="content">
<h:form>
<ace:dataTable var="user" value="#{userBean.users}"
paginator="true" rows="50" selectionMode="multiple">
<ace:column headerText="users">
<ace:row>#{user}</ace:row>
</ace:column>
</ace:dataTable>
</h:form>
</div>
</body>
</html>
很遗憾,显然没有加载 JavaScript / CSS,因此组件无法正确显示。此外,服务器记录此:
ICEfaces configured for view /index.xhtml but h:head and h:body components are required
这有关系吗?
您需要使用 JSF <h:head>
和 <h:body>
组件,而不是普通的 HTML <head>
和 <body>
。这样 JSF 和任何 JSF 组件库将能够以编程方式在其中自动包含 CSS/JS 资源。
例如
<!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"
>
<f:loadBundle basename="resources.application" var="msg" />
<h:head>
<title>#{msg.templateTitle}</title>
</h:head>
<h:body>
...
</h:body>
</html>
请注意,这样您也不再需要 <h:outputStylesheet>
。
另请参阅:
- One or more resources has the target of 'head' but not 'head' component has been defined within the view
与具体问题无关,你最好在faces-config.xml
中声明resources.application
为<resource-bundle>
,这样你就不会需要在所有视图中重复它。另请注意,您不一定需要 <h:outputText>
所有地方。 <head>
和以上所有内容还表明您正在根据 JSF 1.x 目标教程而不是 2.x 目标教程来学习 JSF。确保您使用正确的资源来学习。
我正在尝试将 ICEFaces ACE 组件库集成到我的项目中。我有以下观点:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<head>
<h:outputStylesheet library="org.icefaces.component.skins"
name="rime.css" />
<f:loadBundle basename="resources.application" var="msg" />
<title>
<h:outputText value="#{msg.templateTitle}" />
</title>
</head>
<body>
<div id="content">
<h:form>
<ace:dataTable var="user" value="#{userBean.users}"
paginator="true" rows="50" selectionMode="multiple">
<ace:column headerText="users">
<ace:row>#{user}</ace:row>
</ace:column>
</ace:dataTable>
</h:form>
</div>
</body>
</html>
很遗憾,显然没有加载 JavaScript / CSS,因此组件无法正确显示。此外,服务器记录此:
ICEfaces configured for view /index.xhtml but h:head and h:body components are required
这有关系吗?
您需要使用 JSF <h:head>
和 <h:body>
组件,而不是普通的 HTML <head>
和 <body>
。这样 JSF 和任何 JSF 组件库将能够以编程方式在其中自动包含 CSS/JS 资源。
例如
<!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"
>
<f:loadBundle basename="resources.application" var="msg" />
<h:head>
<title>#{msg.templateTitle}</title>
</h:head>
<h:body>
...
</h:body>
</html>
请注意,这样您也不再需要 <h:outputStylesheet>
。
另请参阅:
- One or more resources has the target of 'head' but not 'head' component has been defined within the view
与具体问题无关,你最好在faces-config.xml
中声明resources.application
为<resource-bundle>
,这样你就不会需要在所有视图中重复它。另请注意,您不一定需要 <h:outputText>
所有地方。 <head>
和以上所有内容还表明您正在根据 JSF 1.x 目标教程而不是 2.x 目标教程来学习 JSF。确保您使用正确的资源来学习。