【发布时间】: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}"
/>
【问题讨论】:
尝试在 INPUT 文本字段中填充和格式化日期值。我在这里做错了什么?
<spring:bind path="salesData.weekEndDate">
<input type="text" name="${status.expression}"
value="${fmt:formateDate pattern='MM/mm/YYYY' status.value}"
/>
【问题讨论】:
JSTL fmt taglib 存在 <fmt:xxx> 标签,而不是 ${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,那么您需要先在<fmt:parseDate> 的帮助下将其解析为Date,然后再将其提供给<fmt:formatDate>。
<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}" />
【讨论】:
YYYY改成yyyy了吗?请注意,我用替代方法更新了答案。
${status.value} 返回String 而不是Date。相应地修复它,使其返回Date。或者,如果由于某些愚蠢的业务限制而无法选择(尽管您为什么要将日期保留为字符串?),那么首先使用<fmt:parseDate pattern="yyyy-MM-dd" value="${status.value}" var="${parsedStatusDate}"> 将String 转换为Date,然后再将其提供给@987654354 @.