要添加到集合的JSP标记库
我有一个JSP页面,它构建了一个字符串列表。您可以添加到列表并清除列表。我在页面顶部有一个scriptlet,它解释提交操作(add vs clear)并实际执行该操作。有没有办法进一步减少scriptlet代码?我需要创建一个自定义标记吗?代码如下:要添加到集合的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="
<%@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的非常好的信息!