我正在尝试创建一个在我的Seam应用程序中使用的复合组件,并且我遇到了最简单的“hello,world”组件的问题。
我在{jboss deploy} /application.ear/application.war/resources/greet中放置了一个名为hello.xhtml的文件:
<!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:h="http://java.sun.com/jsf/html"
xmlns:composite="http://java.sun.com/jsf/composite">
<head>
<title>My First Composite Component</title>
</head>
<body>
<composite:interface>
<composite:attribute name="who"/>
</composite:interface>
<composite:implementation>
<h:outputText value="Hello, #{cc.attrs.who}!"/>
</composite:implementation>
</body>
</html>
现在在home.xhtml中,位于我的webapp的根目录({jboss deploy} /application.ear/application.war/home.xhtml):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition 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"
xmlns:g="http://java.sun.com/jsf/composite/greet"
xmlns:s="http://jboss.com/products/seam/taglib"
template="layout/template.xhtml">
<ui:define name="content">
<div id="content">
<g:hello who="World"/>
<br/>
</div>
</ui:define>
</ui:composition>
但是我的“hello,world”没有显示,我也没有收到任何错误消息,即使我打开com.sun和javax.faces类别的调试级别日志记录。
我已经验证资源目录在适当的位置,因为添加了目录resources / images / test.jpg,然后将其添加到home.xhtml:
h:graphicImage value="#{resource['images:test.jpg']}"/>
显示图像的结果。我只是不知道为什么JSF没有从greet目录中获取我的xhtml文件。
有什么想法吗?
答案 0 :(得分:3)
尝试将其放入META-INF/resources
,而不仅仅是resources
。
答案 1 :(得分:3)
以下是登录复合组件的示例,其中还解释了jsf2资源: http://jugojava.blogspot.com/2011/09/jsf-composite-component-binding-to.html