gpt4 book ai didi

java - 由于某种原因,JSP 文档输出 XML 而不是 HTML

转载 作者:行者123 更新时间:2023-12-01 19:24:41 25 4
gpt4 key购买 nike

好的,我正在尝试设置一个简单的 JSF 应用程序。我正在使用 NetBeans 6.8、Glassfishv3 和 Maven2。我制作了一个 JSP 文档,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<html xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html">
<f:view>
<head>
<title><h:outputText value="#{Welcome.title}"/></title>
</head>
<body>
<h:outputText value="Welcome"/>
</body>
</f:view>
</html>

问题是,如果我导航到此页面 (http://myHost/myApp/faces/welcome.jspx),它将作为 XML 文档返回,但带有 $ {Welcome.title} 填充值:

<?xml version="1.0" encoding="UTF-8"?>
<html><head><title>Gymix - Welcome</title></head><body>Welcome</body></html>

在 Internet Explorer 中,这看起来就像我打开了一个 XML 文档。在 Google Chrome 中,标题打印在“欢迎”文本旁边,而选项卡上打印的不是标题,而是页面的 URL。

如果我将 JSP 文档更改为普通 JSP 页面(taglibs 而不是 xmlns 等),它就会起作用,并且我会返回正确的页面。关于出了什么问题有什么想法吗?谢谢!

编辑:遗憾的是,没有任何快速修复可以解决此问题,因此我将对此进行更多研究。顺便说一句,我的 pom.xml 具有 jsf-api 和 jsf-impl 依赖项,两者的版本都设置为 1.2_14

最佳答案

除了您需要设置正确的 doctype 的事实之外和 content type为了让浏览器知道如何处理页面,您还应该摆脱老式的 jspx格式和使用 xhtml格式以获得 Java EE 6 附带的 JSF 2.0 和 Facelets 的最大优势。

给定的代码应更改为:

<?xml version="1.0" encoding="UTF-8"?>
<!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:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>#{welcome.title}</title>
</h:head>
<h:body>
Welcome
</h:body>
</html>

请注意,包含了 doctype,并且 JSF 2.0/Facelets 将在 <h:head> 的帮助下自动处理正确的内容类型。成分。另请注意缺少 <f:view>标签,Facelets 中不再需要此标签。

您可能还需要重新配置您的 Web 应用程序以利用 JSF 2.0 和 Facelets 的全部功能。要了解有关 JSF 2.0 和 Facelets 的更多信息,我强烈建议您阅读 Java EE 6 tutorial part II chapters 4-9 .

祝你好运。

更新:按照comment of bobince :我要添加一个重要的注释;确实,XML 声明(第一行)会扰乱某些 Web 浏览器的呈现模式(另请参阅上面 doctype 链接后面的站点),但这肯定不是问题。 Facelets 在生成页面的 HTML 期间删除 XML 声明。 XML 声明就在那里,因为 Facelets 需要首先使用基于 XML 的工具来解析页面。我们谈论的是基于组件的 MVC 框架和基于 XML 的模板技术,而不是普通的 HTML 页面;)

关于java - 由于某种原因,JSP 文档输出 XML 而不是 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2074792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com