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条)

报告相同问题?

悬赏问题

  • ¥20 5037端口被adb自己占了
  • ¥15 Error in check.length("fill") : 'gpar'成分'fill'的长度不能为零
  • ¥15 python:excel数据写入多个对应word文档
  • ¥60 全一数分解素因子和素数循环节位数
  • ¥15 ffmpeg如何安装到虚拟环境
  • ¥188 寻找能做王者评分提取的
  • ¥15 matlab用simulink求解一个二阶微分方程,要求截图
  • ¥30 乘子法解约束最优化问题的matlab代码文件,最好有matlab代码文件
  • ¥15 写论文,需要数据支撑
  • ¥15 identifier of an instance of 类 was altered from xx to xx错误