【问题标题】:javax.servlet.jsp.JspException: In &lt;parseDate&gt;, a parse locale can not be establishedjavax.servlet.jsp.JspException:在 <parseDate> 中,无法建立解析语言环境
【发布时间】:2015-11-03 05:44:56
【问题描述】:

有没有人能找出这个错误的根本原因?使用 fmt:parseDate 标记,以正确的格式解析日期。我似乎无法找到一种方法来复制导致此异常的原因。 我的日期格式例如:“2015-08-06 13:13:30.59” 从数据库中提取 order.submittedDate 值并尝试从日期对象中获取 dd。

<fmt:parseDate value="${order.submittedDate}" pattern="yyyy-MM-dd" var="formatedDate"/>
<fmt:formatDate pattern="dd" value="${formatedDate}" var="submittedDay"/>

在完整的堆栈跟踪下方查找

    javax.servlet.jsp.JspException: In &lt;parseDate&gt;, a parse locale can not be established
at org.apache.taglibs.standard.tag.common.fmt.ParseDateSupport.doEndTag(ParseDateSupport.java:138)
at org.apache.jsp.tp_002dapp.emailTemplate.orderConfirmationEmail_jsp._jspx_meth_fmt_005fparseDate_005f0(orderConfirmationEmail_jsp.java:1323)

【问题讨论】:

    标签: jsp jstl atg oracle-commerce


    【解决方案1】:

    使用 Accept-Language Header 发送请求

    尝试使用 java 客户端发出请求时出现此错误。浏览器默认发送 Accept-Language Header。所以客户端请求应该包含这个header。

    Accept-Language: en-GB
    

    【讨论】:

    • 在 Oracle Commerce/ATG 中这可能不起作用,因为区域设置可能基于您选择的站点,而不是您的浏览器标题。
    【解决方案2】:

    尝试下面的代码,它将 en_GB 作为语言环境传递 - 您需要将其替换为您的语言环境:

     <fmt:parseDate value="${order.submittedDate}" pattern="yyyy-MM-dd" var="formatedDate" parseLocale="en_GB" />
    

    如果您想对语言环境进行软编码,您可以在 ATG 中按以下方式进行:

    <dsp:importbean var="requestLocale" bean="/atg/dynamo/servlet/RequestLocale" />
    <fmt:setLocale value="${requestLocale.locale}"/>
    <fmt:parseDate value="${order.submittedDate}" pattern="yyyy-MM-dd" var="formatedDate" />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-26
      • 1970-01-01
      • 2012-03-25
      • 2013-06-14
      相关资源
      最近更新 更多