我开始学习xhtml,因为它是我正在阅读的书中的第一个主题,并尝试创建一个简单的表单以仅输入名称。 这是我从书中复制的内容的一半,仅保留输入文本字段:
<?xml version = "1.0" encoding = "UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<head>
<title>Enter Customer Name</title>
</head>
<body>
<h:outputStylesheet library="css" name="styles.css"/>
<h:messages/>
<h:form id="test">
<h:outputLabel for="firstname" value="first name:"></h:outputLabel>
<h:inputText id="firstname" label="first name" value="#{test.firstname}" required="true">
<f:validateLength minimum="2" maximum="10">
</f:validateLength>
</h:inputText>
</h:form>
</body>
</html>
但是当我在浏览器中打开它时,这就是我得到的
我在做什么错了?
答案 0 :(得分:0)
您的文档不是XHTML。
Doctype声称是这样,但是然后您会遇到很多错误和非XHTML内容。
浏览器正在以XML模式解析文档,如果您实际上是在编写XHTML,这是一个很好的第一步。
如评论中所指出:
xmlns属性不正确。应该是
"http://www.w3.org/1999/xhtml"
而不是"http://w3.org/1999/xhtml"
由于弄错了,您的默认名称空间不会被识别为XHTML,并且浏览器将其视为未知XML格式,没有进行特殊处理。这就是为什么您可以查看XML节点树的原因。
更正后,您的文档开始被解析为XHTML。
现在我所得到的只是一个空白屏幕
这是因为您仅有的XHTML元素是根元素,head
及其后代以及body
。
其他所有内容(例如h:form
)都不是XHTML。您已经从http://java.sun.com/jsf/html
命名空间导入了它(从http://java.sun.com/jsf/core
命名空间导入的那些部分除外)。 (请注意,您选择的Doctype禁止这样做。)
Web浏览器不知道如何处理这些命名空间中的元素,因此它们被插入到DOM中但未呈现。
您需要: