3

如何使用 JSTL 和 EL比较java.util.Date价值?String

这是模型:

private Date myDate; // Wed Jan 01 00:00:00 CET 1001

这是视图:

<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>

然而,条件总是评估为假。我该如何解决?

4

2 回答 2

7

如果你的环境支持 EL 2.2,直接调用它的toString()方法即可。

<c:if test="#{bean.myDate.toString() eq 'Wed Jan 01 00:00:00 CET 1001'}">

如果您没有,请将其转换为Stringfirst 通过将其内联为<c:set>.

<c:set var="myDate">#{bean.myDate}</c:set>
<c:if test="#{myDate eq 'Wed Jan 01 00:00:00 CET 1001'}">

与具体问题无关,这是比较日期的一种相当奇怪的方式。它对语言环境和时区的变化非常敏感(如果网页访问者使用非英语语言环境并且您的 web 应用程序支持非英语语言环境,则测试Wed Jan将失败,如果网络服务器移动到非 CET 时区,则测试onCET会失败)。您不想1001直接比较它还是按年比较或固定模式之类的1001-01-01?此外,我还想知道您为什么不在renderedJSF<h:outputText>组件的属性中进行测试。

于 2012-11-14T13:24:04.880 回答
0

in jsf 1.2

this code works for me :

                           <webuijsf:button
                            actionExpression="#{guiRettificaBilPuntuale_2.button4_action}"
                            id="button4" text="#{bundle.TastoModificaRiga}" 
                            rendered="#{ bilDetailsTable.value.settStatus eq 'N' or bilDetailsTable.value.starttime eq aLGUISessionBean_01.monthCurrentPublBilDate ? false : true}">

and starttime and monthCurrentPublBilDate are both dates (java.Date) so you can transform string in Date and compare them

于 2013-06-07T10:14:57.753 回答