Странное поведение во время работы JSF "Hello World"
При запуске моего JSF "Hello World" на сервере появляется окно "Загрузка файла", в котором говорится: "Вы хотите сохранить этот файл или найти программу онлайн, чтобы открыть его", в котором есть три варианта поиска, сохранения и отмены. Когда я нажимаю "Найти", отображается следующее сообщение
"Windows имеет следующую информацию об этом типе MIME. Эта страница поможет вам найти программное обеспечение, необходимое для открытия вашего файла.
MIME Тип: application/xhtml xml
Описание: UnKnown
Windows не распознает этот тип MIME. "
my 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. Спасибо заранее
Ответы
Ответ 1
MSIE действительно не поддерживает тип содержимого application/xhtml+xml
. Страница должна обслуживаться с типом контента text/html
(вы можете проверить это с помощью инструментов HTTP/web-разработчиков). Но это уже должно быть сделано по умолчанию JSF/Facelets. Кажется, вы не переопределили тип контента в любом месте данного кода. Один из способов - определить его с помощью атрибута contentType
тега <f:view>
. Другой способ - вызвать HttpServletResponse#setContentType()
в каком-то веб-фильтре. Или, совершенно другое, возможно, это было сделано впоследствии самим веб-сервером или некоторым прокси-сервером в строке.