Jsf 使用EL将java.util.Date值转换为字符串

Jsf 使用EL将java.util.Date值转换为字符串,jsf,jstl,el,Jsf,Jstl,El,如何使用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:convertDate

如何使用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>


但是,条件的计算结果始终为false。如何解决它?

如果您的环境支持EL 2.2,请直接调用其方法


如果您没有,请先将其内联为
的主体,将其转换为
字符串

{bean.myDate}

与具体问题无关,这是比较日期的一种相当奇怪的方式。它对区域设置和时区的变化非常敏感(如果网页访问者使用非英语区域设置,并且您的Web应用程序支持非英语区域设置,则
Wed Jan
上的测试将失败,如果Web服务器移动到非CET时区,则
CET
上的测试将失败)。您不想直接比较年份
1001
,还是比较固定模式,例如
1001-01-01
等等?此外,我还想知道为什么不在JSF
组件的
呈现的
属性中进行测试

此代码适用于我:

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


starttime和monthCurrentPublBilDate都是日期(java.Date),所以您可以在Date中转换字符串并比较它们

对不起,“直接比较年份左右”是什么意思?适用于Mojarra 2.1.14上的JSTL 1.2。我回忆起使用MyFaces时的一些问题。您使用的是什么JSF impl/版本?什么JSTL版本?您的环境真的不支持EL 2.2吗?您之前提出的一些问题暗示您正在使用JavaEE6,因此隐式地使用Servlet3.0,从而隐式地使用EL2.2。您实际使用的servletcontainer impl/版本是什么?至于比较年份,只需检查年份是否等于1001或没有区域/时区敏感性的固定模式,例如
yyyy-MM-dd
@BalusC
public Boolean getShow(){if(this.myDate.toString().equals(“Wed Jan 01 00:00:00 CET 1001”){//不要显示它返回false;}否则{返回true;}
在IHM中,我这样做: