【问题标题】:JSTL format tagJSTL 格式标签
【发布时间】:2011-06-03 18:42:50
【问题描述】:

尝试在 INPUT 文本字段中填充和格式化日期值。我在这里做错了什么?

<spring:bind path="salesData.weekEndDate">
 <input type="text" name="${status.expression}"
 value="${fmt:formateDate pattern='MM/mm/YYYY' status.value}"
/>

【问题讨论】:

    标签: jsp jstl


    【解决方案1】:

    JSTL fmt taglib 存在 &lt;fmt:xxx&gt; 标签,而不是 ${fmt:xxx} 函数。

    相应地修复它:

    <input type="text" name="${status.expression}"
        value="<fmt:formatDate pattern="MM/dd/yyyy" value="${status.value}" />" />
    />
    

    (请注意,日期应表示为 dd,而不是 mm,年份应表示为 yyyy,而不是 YYYY,另请参阅 SimpleDateFormat javadoc 了解所有有效模式)

    如果您的 IDE 对嵌套标签感到不快(但它应该可以正常运行)或者您对此感到不满,请使用 var 属性,以便您的 HTML/XML 最终形成良好的格式。

    <fmt:formatDate pattern="MM/dd/yyyy" value="${status.value}" var="statusDate" />
    <input type="text" name="${status.expression}" value="${statusDate}" />
    

    如果你真的想拥有一个${fmt:formatDate()} 函数,你必须自己开发它。您可以在 this answer 中找到启动示例。


    更新每个 cmets,${status.value} 实际上是 String,格式为 yyyy-MM-dd。如果无法将其修复为完全值得的Date,那么您需要先在&lt;fmt:parseDate&gt; 的帮助下将其解析为Date,然后再将其提供给&lt;fmt:formatDate&gt;

    <fmt:parseDate pattern="yyyy-MM-dd" value="${status.value}" var="parsedStatusDate" />
    <fmt:formatDate pattern="MM/dd/yyyy" value="${parsedStatusDate}" var="formattedStatusDate" />
    <input type="text" name="${status.expression}" value="${formattedStatusDate}" />
    

    【讨论】:

    • 嗨 BalusC,这不起作用 value=""
    • 会发生什么?您是否在 JSP 顶部声明了 taglib?你把YYYY改成yyyy了吗?请注意,我用替代方法更新了答案。
    • fmt 标签库丢失。修复它并尝试运行。这就是我得到的:状态码 500 异常类型类 javax.servlet.jsp.el.E​​LException 消息尝试将字符串“2002-04-15”转换为类型“java.util.Date”,但没有相应的 PropertyEditor类型异常 javax.servlet.jsp.el.E​​LException:尝试将字符串“2002-04-15”转换为类型“java.util.Date”,但该类型没有 PropertyEditor
    • 然后${status.value} 返回String 而不是Date。相应地修复它,使其返回Date。或者,如果由于某些愚蠢的业务限制而无法选择(尽管您为什么要将日期保留为字符串?),那么首先使用&lt;fmt:parseDate pattern="yyyy-MM-dd" value="${status.value}" var="${parsedStatusDate}"&gt;String 转换为Date,然后再将其提供给@987654354 @.
    • BalusC,第二个选项也不起作用。关于它的抱怨: JSPG0046E: Unable to locate tagfile for tag formateDate
      即使我已经声明了 java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-14
    • 1970-01-01
    • 2010-11-15
    • 1970-01-01
    • 1970-01-01
    • 2011-10-15
    • 2012-11-30
    相关资源
    最近更新 更多