在服务器上运行我的JSF "Hello World"时,我得到一个文件下载消息框,说"您是想保存这个文件,还是找到一个在线程序来打开它",其中有三个选项查找,保存和取消。当我点击"查找"时,显示以下消息
"Windows有以下关于此MIME类型的信息。本页将帮助您找到打开文件所需的软件。
MIME类型:application/xhtml xml
描述:未知
Windows不识别此MIME类型。"
我的XHTML是
<?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 lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html" xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head>
<title>Insert title here</title>
</h:head>
<h:body>
<f:view>
<h:outputText value="Hello World"></h:outputText>
</f:view>
</h:body>
</html>
web . xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>hospital</display-name>
<welcome-file-list>
<welcome-file>login.xhtml</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
</web-app>
如果我运行那个特定的xhtml文件,那么它就会显示在IE中。但是对xhtml文件的任何更新都会在刷新IE后显示。
我正在使用Eclipse-helios IDE, Glassfish webserver。提前感谢
MSIE确实不支持application/xhtml+xml
的内容类型。该页面的内容类型应为text/html
(您可以使用HTTP/web开发人员工具进行验证)。但是JSF/Facelets的默认配置应该已经完成了。您似乎没有在给定代码的任何地方重写内容类型。其中一种方法是使用<f:view>
标签的contentType
属性来定义它。另一种方法是在一些网络过滤器中调用HttpServletResponse#setContentType()
。或者,完全不同,也许是由web服务器自己或代理在行后完成的。