无法将HTML添加到<ui:define> </ui:define>

时间:2011-10-13 14:07:22

标签: java jsf-2 facelets

我最近开始使用JSF2.0和Facelets,但已经遇到了我希望对大多数人来说很简单的答案。当我尝试在<ui:define>标记中添加任何HTML标记时,我收到以下错误:

  

javax.faces.view.facelets.TagException:/content/home/test.xhtml @ 11,10标签库支持名称空间:http://java.sun.com/jsf/facelets,但没有为名称定义标记:div

如果我从页面中正确显示的部分删除了所有HTML标记。这是我一直努力工作的简单页面:

<!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:f="http://java.sun.com/jsf/core"
  xmlns:ui="http://java.sun.com/jsf/facelets"
  xmlns:jrc="http://com.comanche.web.components"> 
<ui:composition template="/templates/masterLayout.xhtml" xmlns="http://java.sun.com/jsf/facelets">      

    <ui:define name="windowTitle">Home</ui:define>
    <ui:define name="content">
            <div>I want to add HTML and am having lots of trouble.</div>
    </ui:define>
</ui:composition>
</html>

我知道我应该能够在define标签中添加HTML。如果没有任何错误,我需要做什么才能获得HTML。

1 个答案:

答案 0 :(得分:2)

您的<ui:composition>声明使用了错误的全局XML命名空间。您将http://java.sun.com/jsf/facelets定义为全局XML命名空间,而它应该已分配给ui: XML命名空间。 Facelets标记库中不存在<div>标记(这是异常试图告诉您的内容)。您应该已将http://www.w3.org/1999/xhtml指定为全局XML命名空间。此外,<!DOCTYPE><html>无论如何都会被忽略。该文件的唯一内容应如下所示:

<ui:composition template="/templates/masterLayout.xhtml" 
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets">      

    <ui:define name="windowTitle">Home</ui:define>
    <ui:define name="content">
        <div>I want to add HTML and am having lots of trouble.</div>
    </ui:define>
</ui:composition>

在同一个文件中<ui:composition>之前或之后都没有必要。

另见: