0

大家好,我遇到了一个非常奇怪的问题。我创建了一个客户端模板 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>

撰写.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>

但是当我<include src="compose.xhtml">在 insert.xhtml 中使用标签时,它会显示完整的 facelet。但包含标签只有在我这样写时才有效

<insert name="face1">
<include src="compose.xhtml"/>
</insert>

如果我在包含之前删除insert标签,那么包含也不起作用。我对 JSF 2.0 facelets 的这种奇怪行为感到恶心。请帮助我
谢谢

4

2 回答 2

0

尝试遵循本教程,如果您是 JSF 2 模板的新手,这将非常有帮助。这是链接

我认为问题出在您尝试使用的模板的路径中:

<ui:composition template="insert.xhtml">

应该 :

<ui:composition template="/insert.xhtml">

如果模板在根文件夹中。

于 2012-07-13T00:45:04.720 回答
0

首先,您需要了解标签中的“模板”属性是可选的,因此这意味着您的代码中有一个小错误。正如您所知,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 标记中。
你的问题类似于这个问题。我希望这对你也有帮助。
谢谢

于 2012-07-24T05:03:02.987 回答