2010-02-09 5 views
2

IE, похоже, игнорирует тег fmt в JSTL. Я пробовал с fmt: formatNumber и fmt: formatDate, и ни один из них не работает в IE, но они работают во всех других браузерах. (Я использую IE8 и JSTL 1.1)JSTL fmt tag не работает в IE?

Это известная проблема?

Вот пример кода, который не работает:

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> 
<fmt:formatNumber maxIntegerDigits="2">2003</fmt:formatNumber> 
<fmt:formatNumber maxIntegerDigits="2" value="2003" /> 

ответ

6

JSP/JSTL выполняется на стороне сервера, он не имеет ничего общего с тем, что браузер вы используете.

Что-то неправильно сконфигурированный на сервере.

Что вы имеете в виду под «не работает»? Вызывает ли это исключение, дает ли вам пустую страницу, что?


редактировать:fmt тег зависит от текущей локали выполняющегося потока, который Spring берет из запроса HTTP. если IE передает другой указатель локали, чем другие браузеры (по какой-то причине я не знаю почему), то тег fmt может изменить свой вывод.

Либо вы должны убедиться, что все браузеры проходят один и тот же языковой стандарт, или вы можете изменить его в JSP, чтобы заставить его быть одинаковым для всех:

<fmt:setLocale> - Установка по умолчанию локаль для указанный объем. Этот переопределит локаль на основе браузера.

+0

Код, который я разместил (два варианта одного и того же), должен отображать «03», что он делает, если я открою страницу в FF, Opera, Chrome или Safari. Если я открою его в IE, он отобразит «2003». Поэтому IE, похоже, игнорирует тег fmt. Другие теги JSTL, такие как c: и sql: отлично работают в IE. –

0

Я нашел решение! Если я сначала использую тег fmt: setLocale, другие теги начинают работать по какой-то причине ... Кажется, не имеет значения, какой языковой стандарт я ему устанавливаю.

1

Любой браузер, который не посылает заголовок в Accept-Language запрос будет иметь этот вопрос. Лучшее решение - установить свойство fallbackLocale, которое является Locale, которое будет использоваться, если не указано значение Accept-Language.

Это свойство может быть установлен в любой области видимости (страницы запрос, приложение, сессия). Свойством, которое необходимо установить, является «javax.servlet.jsp.jstl.fmt.fallbackLocale. scope ', где scope - соответствующее значение для того, где вы его устанавливаете.

Таким образом, чтобы установить его для всего приложения, сделать что-то вроде:

servletContext.setAttribute ("javax.servlet.jsp.jstl.fmt.fallbackLocale.application", java.util.Locale. НАС);

Лучшее место, чтобы положить это в ServletContextListener.

Если вам нужно только сделать это для определенных страниц, то вы могли бы сделать следующее в JSP:

<% pageContext.setAttribute ("javax.servlet.jsp.jstl.fmt.fallbackLocale .page ", java.util.Locale.НАС); %>

+0

Отличный ответ - я использовал этот код, и он сработал. Это происходит для меня для старых версий IE6. – GavinR

Смежные вопросы