tutu5168 2015-07-14 15:10 采纳率: 100%
浏览 1867
已采纳

httpclient4.5请求jsp时jsp上的jstl标签<fmt:formatDate>不会格式化日期

httpclient4.5请求jsp时jsp上的jstl标签fmt:formatDate不会格式化日期,浏览器访问相同url能正常格式化日期。

jsp代码

 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
.....
    <%
        Date iDate = new Date();
        request.setAttribute("iDate", iDate);
    %>
    <div>
        <c:forEach var="v" begin="1" end="3" step="1">
            <div>
                <fmt:formatNumber value="${v}" pattern="####.00" />
            </div>
        </c:forEach>
    </div>
    <div>
        =[fmt]<fmt:formatDate value="${iDate}" pattern="yyyy-MM-dd" />
    </div>
    <div>
        =[native]${iDate }
    </div>

浏览器正常

<DIV>1.00 </DIV>
<DIV>2.00 </DIV>
<DIV>3.00 </DIV>
<DIV>=[fmt]**2015-07-14**</DIV>
<DIV>=[native]Tue Jul 14 22:28:17 CST 2015 </DIV>

httpclient4.5访问时返回不正确

 <div>1</div>
<div>2</div>
<div>3</div>
<div>=[fmt]**Tue Jul 14 23:03:57 CST 2015**</div>
<div>=[native]Tue Jul 14 23:03:57 CST 2015</div> 

jstl应该是在服务器生成html文本返回客户端前执行的,c:foreach之类的可以,fmt:xxxx之类的标签却不能正确执行。

  • 写回答

3条回答 默认 最新

  • tutu5168 2015-07-14 16:27
    关注

    刚查看了jstl-1.2.jar的源码,明白不能正确格式化的原因了。
    if (locale != null) {
    //some code.
    else {
    formatted = this.value.toString();
    }

    通过httpclient4.5访问时因为没有设置Accept-Language头信息,所以服务器端获取的Accept-Language头信息为null,直接调用日期的toString()方法返回String,从而导致浏览器访问url显示正常格式化日期,而使用httpclient4.5访问url得到的是没有格式化的日期字符串。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题