启用ICEfaces compat会导致无法识别h:head和h:body

时间:2012-04-12 12:15:51

标签: icefaces

我正在研究ICEfaces 3应用程序,我有以下XHTML文件:

<?xml version='1.0' encoding='UTF-8' ?>
<!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:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ice="http://www.icesoft.com/icefaces/component"
    xmlns:icecore="http://www.icefaces.org/icefaces/core"
    xmlns:ace="http://www.icefaces.org/icefaces/components"
    >
<h:head></h:head>
<h:body>
    <ui:composition template="template/main-template.xhtml"> ... </ui:composition>
</h:body>
</html>

使用这个没有icefaces的模板 - WAR中包含的compat效果很好(只要我明显只使用ACE组件)。但现在我想使用一些ice:组件,因此需要-compat JAR。但是当将此JAR添加到WAR时,会发生以下错误:

12.04.2012 13:56:32 org.icefaces.impl.event.BridgeSetup isListenerForSource
WARNING: ICEfaces configured for view /configuration.xhtml but h:head and h:body components are required

当我从侧面完全删除ui:composition标记时,也会发生此错误,即<h:body>标记为空。

我很高兴提供更多信息,但是现在我不确定什么是重要的,因为我唯一的区别是我将-compat库添加到WAR。

1 个答案:

答案 0 :(得分:2)

我终于提出了一个非常简单的解决方案:我忘了添加WEB-INF / faces-config.xml文件。只要使用ACE等,这似乎没问题,但只要使用-compat罐子,它似乎是必要的。文件本身只需要包含:

<?xml version="1.0" encoding="UTF-8"?>
<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                              http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
          version="2.0">
</faces-config>