Java JSTL fmt标记在IE中不起作用?

Java JSTL fmt标记在IE中不起作用?,java,jsp,jstl,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<

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" />

2003

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

服务器上的某些配置错误

你说“不行”是什么意思?它会引发异常吗?它会给你一个空白页吗?什么


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

您需要确保所有浏览器都传递相同的语言环境,或者您可以在JSP中重写该语言环境,以强制每个浏览器都使用相同的语言环境:

-设置默认值 指定范围的区域设置。这 将覆盖基于浏览器的区域设置

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

任何不发送
接受语言
请求头的浏览器都会出现此问题。最好的解决方案是设置fallbackLocale属性,该属性是在未指定
Accept Language
时将使用的区域设置

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

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

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

最好放在ServletContextListener中

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


我发布的代码(同一事物的两个变体)应该显示“03”,如果我在FF、Opera、Chrome或Safari中打开页面,就会显示“03”。如果我在IE中打开它,它会显示“2003”。所以IE似乎忽略了fmt标签。其他JSTL标记,如c:和sql:在IE中工作得很好。答案很好-我使用了该代码,它工作得很好。对于我来说,IE6的旧版本就是这样。