要添加到集合的JSP标记库

要添加到集合的JSP标记库,jsp,Jsp,我有一个JSP页面,它构建了一个字符串列表。您可以添加到列表并清除列表。我在页面顶部有一个scriptlet,它解释提交操作(add vs clear)并实际执行该操作。有没有办法进一步减少scriptlet代码?我需要创建一个自定义标记吗?代码如下: <%@page contentType="text/html" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="

我有一个JSP页面,它构建了一个字符串列表。您可以添加到列表并清除列表。我在页面顶部有一个scriptlet,它解释提交操作(add vs clear)并实际执行该操作。有没有办法进一步减少scriptlet代码?我需要创建一个自定义标记吗?代码如下:

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<jsp:useBean id="users" class="java.util.ArrayList" scope="session"/>
<%
    String action = request.getParameter("action");

    if ("Clear".equals(action)) {
        users.clear();
    } else {
        String name = request.getParameter("name");

        if (name != null && !name.isEmpty()) {
            users.add(name);
        }
    }
%>    
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>User List</title>
    </head>
    <body>    
        <h1>User List</h1>
        <form method="post" action="Tag.jsp">
            <label for="name">Name</label>
            <input id="name" type="text" name="name"/>
            <input type="submit" value="Add" name="action"/>
            <c:if test="${not users.isEmpty()}">
                <input type="submit" value="Clear" name="action"/>
            </c:if>
        </form>
        <ul>
            <c:forEach var="user" items="${users}">
                <li>${user}</li>
            </c:forEach>
        </ul>
    </body>
</html>

用户列表
用户列表
名称
  • ${user}

没有用于此的标准jstl标记库。您必须创建自己的taglib,或者使用谷歌搜索另一个解决方案


请在此处查看标准jstl标记库:http://download.oracle.com/javaee/5/jstl/1.1/docs/tlddocs/index.html

我继续,将逻辑移到一个Servlet,它充当控制器。这似乎比自定义标记更有意义。

根据应用程序的简单程度,您可能应该考虑使用MVC模式,并将控制器(添加/清除逻辑)与视图(JSP)分离。我永远不会在JSP中编写scriptlet,因为您会失去很多优秀JavaIDE的帮助/错误检查。是的,scriptlet是我试图避免的。将控制器逻辑移到别处听起来不错。我应该把它放在Servlet中吗?也许是定制标签?还有什么吗?是的,我浏览了标准标签库文档,没有找到任何可以向集合添加项目的内容。我找到的最接近的东西是c:set标签。我开始认为创建一个Servlet作为控制器将是最干净的解决方案。好极了!对于其他对这个问题有疑问的人,请查看如何开始使用servlet;它有关于servlet的非常好的信息!