我正在研究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。
答案 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>