JSTL fmt标签在IE中不起作用?

时间:2010-02-09 09:37:53

标签: java jsp jstl

IE似乎忽略了JSTL中的fmt标记。我试过fmt:formatNumber和fmt:formatDate,既不能在IE中工作,但它们适用于所有其他浏览器。 (我使用的是IE8和JSTL 1.1)

这是一个已知问题吗?

以下是不起作用的代码示例:

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

3 个答案:

答案 0 :(得分:7)

JSP / JSTL在服务器端执行,它与您正在使用的浏览器无关。

您的服务器上配置错误。

“不起作用”是什么意思?它是否会引发异常,是否会为您提供空白页,是什么?


编辑 fmt标记受执行线程的当前区域设置的影响,Spring从http请求中获取该区域。如果IE传递的语言环境指示不同于其他浏览器(由于某种原因,我不知道为什么),那么fmt标签可能会改变其输出。

您需要确保所有浏览器都传递相同的区域设置,或者您可以在JSP中覆盖它以强制它对每个人都相同:

  

<fmt:setLocale> - 设置默认值   指定范围的区域设置。这个   将覆盖基于浏览器的区域设置。

答案 1 :(得分:1)

任何未发送Accept-Language请求标头的浏览器都会遇到此问题。最佳解决方案是设置fallbackLocale属性,该属性是在未指定Accept-Language时将使用的区域设置。

可以在任何范围(页面,请求,应用程序,会话)设置此属性。需要设置的属性是'javax.servlet.jsp.jstl.fmt.fallbackLocale。 scope ',其中scope是您设置它的适当值。

因此,要为整个应用程序设置它,请执行以下操作:

  

servletContext.setAttribute(“javax.servlet.jsp.jstl.fmt.fallbackLocale.application”,java.util.Locale.US);

放置它的最佳位置是ServletContextListener。

如果您只需要对某些页面执行此操作,那么您还可以在JSP中执行以下操作:

  

&lt;%pageContext.setAttribute(“javax.servlet.jsp.jstl.fmt.fallbackLocale.page”,java.util.Locale.US); %GT;

答案 2 :(得分:0)

我找到了解决方案! 如果我首先使用fmt:setLocale标记,其他标记由于某种原因开始工作...似乎无关紧要我将其设置为哪个语言环境。