JSTL格式标记

时间:2011-06-03 18:42:51

标签: jsp jstl

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

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

1 个答案:

答案 0 :(得分:13)

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中找到启动示例。


更新作为每条评论的结果,${status.value}实际上是格式为String的{​​{1}}。如果将其修改为值得考虑的yyyy-MM-dd不是一个选项,则需要先将Date解析为Date,然后再将其<fmt:parseDate>提供给<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}" />