【问题标题】:How can i implement an if statement in a jsp in java web app?如何在 java web 应用程序的 jsp 中实现 if 语句?
【发布时间】:2021-07-10 14:55:22
【问题描述】:

我正在做的是实现一个表格来显示即将到来的约会,我有一个 if 语句,我希望在其中实现以防止显示旧的且不在当前时间范围内的数据。例如,约会前的昨天或几周不应显示在 jsp 中?

我教过一个 if 语句,目前的代码是:

 <form method="POST" action="<%=request.getContextPath()%>/Appointment/delete">
                    <c:choose>
                        <c:when test="${empty list}">
                            <h1>No appointments available</h1>
                        </c:when>
                        <c:otherwise>

                            <table class="styled-table" style="margin-bottom: 15px; margin-top:15px;">
                                <thead>
                                    <tr>
                                        <th>Patient Name</th>  
                                        <th>Appointment Date</th>
                                        <th>Delete</th>
                                    </tr>
                                </thead>
                                <c:forEach items="${list}" var="record">
                                    <c:choose>
                                       
                                        <c:when test="${record.date lt} <% LocalDateTime now = LocalDateTime.now(); %>">
                                    <tbody>
                                        <tr class="active-row">
                                            <td>${record.name}</td>
                                            <td>${record.date}</td>
                                            <td id="id"><button  class="delete"  value="${record.appointmentId}" ><i class="fas fa-trash-alt"></i></button></a></td>
                                        </tr>
                                    </tbody> 
                                        </c:when>
                                        <c:otherwise>
                                         
                                        </c:otherwise>
                                    </c:choose>
                                </c:forEach>
                            </table >
                        </form>

嗯,我对学习 jsp 和 java web 开发的东西还是很陌生,我真的很感激帮助你完成这项工作。提前致谢。

【问题讨论】:

  • 好吧,您已经在使用 JSTL(例如 &lt;c:choose&gt; 等),所以 &lt;c:if&gt; 也应该可用。
  • 请注意,&lt;% LocalDateTime now = LocalDateTime.now(); %&gt; 在表达式中不起作用。试试${record.date lt java.time.LocalDateTime.now()} 之类的东西(不记得确切的 Java EL 语法 atm)。
  • 谢谢大家的帮助

标签: java jsp web jstl


【解决方案1】:

尽管您可以实现此过滤,但 JSP 并不真正适合在呈现期间进行大量客户端处理。我建议您在您的 servlet 代码中确定应显示哪些约会,然后返回这些约会。因此,列表将填充正确的约会开始

如果您仍想在 JSP 中执行此操作,这里有一些建议。要在 JSP 循环中添加条件,您可以执行以下操作:

<c:forEach items="${list}" var="record">
    <!-- Only show records younger than 7 days -->
    <c:if test="${record.ageInDays lt 7}">
        <tbody>
            <tr class="active-row">
                <td>${record.name}</td>
                <td>${record.date}</td>
                <td id="id"><button  class="delete"  value="${record.appointmentId}" ><i class="fas fa-trash-alt"></i></button></a></td>
            </tr>
        </tbody> 
    </c:if>
</c:forEach>

为此,您应该在 Java 记录类中添加一个方法

public class Appointment {

    private static final long ONE_DAY_IN_MILLIS = 24 * 60 * 60 * 1000;

    //... existing code

    public int getAgeInDays() {
        return (System.currentTimeMillis() - date.getTime()) / ONE_DAY_IN_MILLIS;
    }
}

这种方法避免了在 JSP 中进行日期计算。

【讨论】:

  • 非常感谢你,这意味着很多,它肯定有帮助。
猜你喜欢
  • 2018-01-21
  • 2014-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-05
  • 1970-01-01
  • 1970-01-01
  • 2018-05-11
相关资源
最近更新 更多