我最近开始使用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。
答案 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>
之前或之后都没有必要。