【问题标题】:value from resource bundle as pattern in formatDate资源包中的值作为 formatDate 中的模式
【发布时间】:2010-05-21 15:05:59
【问题描述】:

我也想从资源包中读取 JST formatDate 的模式,但是这种天真的方法不起作用,我做错了什么?

在 com/company/MyPortlet.properties 中是这个键:

company.date.format = yyyy-MM-dd HH:mm:ss

在我的页面中:

<fmt:setBundle basename="com.company.MyPortlet"/>
<fmt:formatDate value="${date}"  pattern="${company.date.format}" />

【问题讨论】:

    标签: java jsp localization jstl


    【解决方案1】:

    你需要给包一个变量名。

    <fmt:setBundle basename="com.company.MyPortlet" var="bundle" />
    

    ${bundle} 可以在页面中访问这种方式捆绑包。您可以通过fmt:message 获取消息,并且可以使用其var 属性将其存储在本地范围内。然后就可以在fmt:formatDatepattern属性中使用了

    <fmt:message bundle="${bundle}" key="company.date.format" var="pattern" />
    <fmt:formatDate value="${date}" pattern="${pattern}" />
    

    【讨论】:

    • 看起来很合理,但我得到 javax.el.PorpertyNotFoundException 与 "property 'company.date.format' not found on type javax.servlet.jsp.jstl.fmt.LocalizationContext" 。
    • 哦,对不起,自从我切换到 JSF 以来,我已经最后一次使用它们了,最初的方法适用于 JSF 的 f:loadBundle,我对此感到困惑。我现在已经更新了答案。
    • 啊,它看起来太复杂了:),我没看到。这就是答案,非常感谢。
    • 不客气。是的,这就是你为一个古老的 i18n 库支付的费用 :) 你也可以考虑在扩展 ResourceBundle 的会话范围 bean 中自己加载包。
    • 谢谢。旧答案,我知道,但对我必须做的事情非常有用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-06
    • 1970-01-01
    • 1970-01-01
    • 2015-01-07
    • 1970-01-01
    • 2016-01-15
    • 1970-01-01
    相关资源
    最近更新 更多