【问题标题】:Convert scriptlet into JSTL将 scriptlet 转换为 JSTL
【发布时间】:2014-05-17 21:53:59
【问题描述】:

我有这段代码,并且我在某处读过现在的 scriplets 已被高度弃用和劝阻。我想将 JSTL 用于以下代码,但我有一些问题要了解 JSTL 和 EL 的工作原理。你有什么建议、指南、方法吗?

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="java.util.*, ejb.EsempioEntity" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<%
    List<EsempioEntity> list = (List<EsempioEntity>)request.getAttribute("list");
%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>View</title>
    </head>
    <body>
        <%
            if(list!=null)
            {
                for(EsempioEntity ee:list)
                {
                    out.print("<p>"+ee.toString()+"</p>");
                }
            }
            else
            {
                out.print("<p>Nessun dato!</p>");
            }
        %>
    </body>
</html>

【问题讨论】:

  • 单击问题底部的 JSTL 标签。然后单击信息选项卡。 EL 也一样。

标签: jsp jstl el


【解决方案1】:

请看下面的JSTL。

示例代码:

<c:if test="${list!=null }">
    <c:forEach items="${list}" var="item">
        <p>${item}</p>
    </c:forEach>
</c:if>
<c:if test="${list==null }">
    <p>Nessun dato!</p>
</c:if>

或者试试

<c:choose>
    <c:when test="${list!=null }">
        <c:forEach items="${list}" var="item">
             <p>${item}</p>
        </c:forEach>
    </c:when>
    <c:otherwise>
        <p>Nessun dato!</p>
    </c:otherwise>
</c:choose>

【讨论】:

【解决方案2】:

它的核心看起来像这样:

<c:if test="${empty list}">
  <p>Nessum dato!</p>
</c:if>

<c:forEach items="${list}" var="row">
  <p><c:out value="${row}" /></p>
</c:forEach>

我推荐在JSTL info 中找到的资源以获取更多信息。

【讨论】: