嗨大家我有一个非常奇怪的问题。我创建了一个客户端模板facelet和模板facelet。但是当我运行我的网页时,它不会插入定义的标签。我的意思是不工作。这是我的代码
insert.xhtml:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets">
<head>
<title>facelet example </title>
</head>
<body>
<ui:insert name="face1"> </ui:insert>
<ui:insert name="face2"> </ui:insert>
<ui:insert name="face3"> </ui:insert>
<ui:insert name="face4"> </ui:insert>
</body>
</html>
compose.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:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html">
<body>
<ui:composition template="insert.xhtml">
<ui:define name="face1">
<center><h2>Facelet</h2></center>
<h3>Welcome to the Facelet world..........</h3>
</ui:define>
<ui:define name="face2">Enter UserID :<br/>
<h:inputText id="it" /><br/><br/>
</ui:define>
<ui:define name="face3">Enter Password :<br/>
<h:inputSecret id="is" /><br/><br/>
</ui:define>
<ui:define name="face4">
<h:commandButton id="b" value="Submit" />
</ui:define>
</ui:composition>
</body>
</html>
但是当我在insert.xhtml中使用<include src="compose.xhtml">
标签时,它会显示完整的facelet.But包含标签仅在我这样写时才有效
<insert name="face1">
<include src="compose.xhtml"/>
</insert>
如果我在include之前删除insert
标签然后包括也不工作。我厌倦了这个JSF 2.0 facelets的奇怪行为。请帮帮我
感谢
答案 0 :(得分:0)
尝试按照本教程,如果您不熟悉JSF 2模板,这将非常有用。 Here is the link
我认为问题出在您尝试使用的模板的路径中:
<ui:composition template="insert.xhtml">
应该是:
<ui:composition template="/insert.xhtml">
如果模板位于根文件夹中。
答案 1 :(得分:0)
首先,您需要了解标签“template”属性是可选的,这意味着您的代码中存在一些错误。如您所知,facelet将仅包含标签之间的部分,因此
xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
这应该带有不在html标签中的组合。
您的问题类似于this question。我希望这也会对您有所帮助
感谢