2011-12-31 213 views
0

在我的应用程序,我使用Struts 2Struts 2的“如果”标签

在一个页面上,我想使用Struts 2 <s:if>标签,但不能让它开始工作。

在行动中,我向视图展示了一个“人物”实体。

然后在页面中,我想比较当前日期和人的生日。

我尝试这样做:

<s:if test="person.birthday > new java.util.Date()">xxxx</s:if> 

但它不工作。

如何解决?

+0

'person.brithday'的数据类型是什么? – 2011-12-31 07:22:31

回答

3

我相信,你正在使用Dateperson.brithday数据类型,方式如下

如果你可以改变/修改你的行动增加新的java.util.Date()的行动。你可以做到这一点作为一个新领域。

另外使用java.util.Date()是不好的做法,因为在所有的大部分方法已过时,所以我建议你使用java.util.Calendar这是更灵活。

您可以使用Date.equals(), Date.before() and Date.after()比较2 dates.All你需要做的事情如下

<s:if test="%{person.brithday.before(currentdate)}"> 
    inside If block 
</s:if> 
<s:else> 
    else block 
</s:else> 

我在哪里假设currentDate在你的Action类被设置,但如果你想将其更改为只有在jsp页面中使用它才能更改它。

+2

IMO如果当前日期没有在页面的其他地方使用,最好在操作中设置一个“isBirthday”标志并公开该标志;更容易测试,并保持计算的视野。 – 2011-12-31 14:45:38

+0

是的同意!!!从来没有来到我心中感谢这个建议:) – 2011-12-31 14:49:11