如何使用JSTL和EL 来比较java.util.Date价值String?
这是模型:
private Date myDate; // Wed Jan 01 00:00:00 CET 1001
Run Code Online (Sandbox Code Playgroud)
这是观点:
<c:if test="#{bean.myDate eq 'Wed Jan 01 00:00:00 CET 1001'}">
<h:outputText value="#{bean.myDate}">
<f:convertDateTime pattern="EEEE dd MMM yyyy @ HH:mm:ss" />
</h:outputText>
</c:if>
Run Code Online (Sandbox Code Playgroud)
但是,条件始终评估为false.怎么解决呢?
如果您的环境支持EL 2.2,请toString()直接调用其方法.
<c:if test="#{bean.myDate.toString() eq 'Wed Jan 01 00:00:00 CET 1001'}">
Run Code Online (Sandbox Code Playgroud)
如果你没有,请将String其作为主体内联转换为第一个<c:set>.
<c:set var="myDate">#{bean.myDate}</c:set>
<c:if test="#{myDate eq 'Wed Jan 01 00:00:00 CET 1001'}">
Run Code Online (Sandbox Code Playgroud)
与具体问题无关,这是比较日期的一种相当奇怪的方式.它对区域设置和时区的更改非常敏感(如果网页访问者使用非英语语言环境,并且您的webapp支持非英语语言环境,则测试Wed Jan将失败,如果Web服务器移动到非CET时区,则测试上CET会失败).难道你不想1001直接比较它或者像1001-01-01左右这样的固定模式吗?此外,我也想知道为什么你不在renderedJSF <h:outputText>组件的属性中进行测试.
| 归档时间: |
|
| 查看次数: |
2504 次 |
| 最近记录: |