Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在JSP中使用struts 2比较日期_Java_Jsp_Jakarta Ee_Struts2_Ognl - Fatal编程技术网

Java 在JSP中使用struts 2比较日期

Java 在JSP中使用struts 2比较日期,java,jsp,jakarta-ee,struts2,ognl,Java,Jsp,Jakarta Ee,Struts2,Ognl,我想使用Struts2 One is returned from the backend (test.currentDate) == "2012-11-15)" The other one I just set "2014-10-19" 我如何比较这两个日期 我的代码如下: <s:set name="currentDate" value="%{test.currentDate}"/> <s:set name="futureDate" value="2014-10-19"/

我想使用
Struts2

One is returned from the backend  (test.currentDate) == "2012-11-15)"
The other one I just set "2014-10-19"
我如何比较这两个日期

我的代码如下:

<s:set name="currentDate"  value="%{test.currentDate}"/>
<s:set name="futureDate" value="2014-10-19"/>
<s:if test="%{#currentDate.before(#futureDate)}">
    <s:text name="test"/> <s:date name="test.currentDate" format="MM/yy"/> 
</s:if>
<s:else>
    <s:text name="test2"/>
</s:else>

获取未来日期的时间戳长值(例如2014-10-19==1413706569870),然后在JSP中

<s:if test="1413706569870l > test.currentDate.time">


在上面的示例中,您试图将字符串与导致问题的日期对象进行比较。 我建议您编写一个助手类来比较日期,并利用OGNL静态方法访问


之后和之前缺少一个右括号(#futureDate
我的建议:将这种逻辑付诸行动,并感到高兴。带有OGNL的Struts2逻辑标记,除了最琐碎的测试/控制结构外,都是PITA,很难调试和维护。我对action类没有控制权……实际问题是什么?你是说它不起作用吗?如果是,请描述它如何不起作用工作。您是否检查了正在使用的数据?它们是日期还是字符串?是否有异常?这正在工作..我可以在屏幕中看到日期如何测试?如何计算时间戳?您希望两者中的较晚者返回false-correct?已更新。时间戳后缺少“l”以指示这是长值。
<s:if test="test.currentDate.before(new java.util.Date(1413706569870l))">
    <s:set var="currentDate" value="%{new java.util.Date()}"/>
    <s:set var="futureDate" value="%{new java.util.Date()}"/>
    <s:property value="{#currentDate}"/>
    <s:property value="{#futureDate}"/>
    <s:if test="%{@com.mycompany.temp.strtus2.example.HelloWorld@compareDate(#currentDate, #futureDate)}">
        <div>Do your stuff</div>
    </s:if>
    <s:else>
        <div>else condition</div>
    </s:else>
public static boolean compareDate(Date currentDate, Date futureDate) {
    boolean flag = false;
    if (removeTime(currentDate).equals(removeTime(futureDate))) {
        flag = true;
    } 
    return flag;
}

public static Date removeTime(Date date) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    cal.set(Calendar.HOUR_OF_DAY, 0);
    cal.set(Calendar.MINUTE, 0);
    cal.set(Calendar.SECOND, 0);
    cal.set(Calendar.MILLISECOND, 0);
    return cal.getTime();
}