JSTL, и даты сравнения

Я видел некоторые сообщения о сравнении дат в JSTL, но я все еще не могу заставить его работать.

У меня есть поле даты, которое я хочу проверить, после 01-01-1970.

<c:if test="${user.BirthDate > whatGoesHere}">
    <doSomeLogic/>
</c:if>

}

может быть, следует использовать Боб ?

спасибо !

5 ответов


просто использовать <fmt:formatDate> чтобы извлечь год из него, чтобы вы могли сделать математику на нем.

<fmt:formatDate value="${user.birthDate}" pattern="yyyy" var="userBirthYear" />
<c:if test="${userBirthYear le 1970}">
    <doSomeLogic/>
</c:if>

вы также можете добавить логический геттер к вам bean:

public boolean isBirthDateAfter1970(){
    return birthDate.after(dateOf1970);
}

таким образом, вы можете использовать следующий EL:

<c:if test="${user.birthDateAfter1970}">
   You were born after the sixties.
</c:if>

U может использовать jstl и usebean что-то вроде этого

    <jsp:useBean id="now" class="java.util.Date"/>
    <c:if test="${someEvent.startDate lt now}"> 
    It's history!</c:if>

<c:if test="${date1.time > date2.time}">...</c:if>

или lt,=,gt:

<c:if test="${date1.time gt date2.time}">...</c:if>

мы эксплуатируем Long getTime() метод java.util.Date.


вы можете использовать (устаревшие) методы getYear(), getMonth(), etc.

<c:if test="${user.BirthDate.year > 99}">
  <doSomeLogic/>
</c:if>

отметим, что getYear() возвращает номер года - 1900.