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" />
答案 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标记,其他标记由于某种原因开始工作...似乎无关紧要我将其设置为哪个语言环境。