【发布时间】:2010-04-22 12:21:18
【问题描述】:
我想实现的是:
在 JSP x 中,当用户单击此按钮时,我有一个 3 个下拉列表和一个名为编辑的按钮,应动态显示一个表。现在该表已根据这 3 个下拉列表中的值进行了修改。所以它可以是 3 列或 4 列甚至 6 列,这取决于所选的值。所以我尝试的是使用servlet对getParameter做if子句构造html然后转发响应。您对我可以在 JSP 中使用的结构有什么建议吗?谢谢你。
【问题讨论】:
我想实现的是:
在 JSP x 中,当用户单击此按钮时,我有一个 3 个下拉列表和一个名为编辑的按钮,应动态显示一个表。现在该表已根据这 3 个下拉列表中的值进行了修改。所以它可以是 3 列或 4 列甚至 6 列,这取决于所选的值。所以我尝试的是使用servlet对getParameter做if子句构造html然后转发响应。您对我可以在 JSP 中使用的结构有什么建议吗?谢谢你。
【问题讨论】:
您不应该在 servlet 中构造 HTML。在 JSP 中进行。您可以使用JSTL 来控制JSP 页面中的页面流。只需将jstl-1.2.jar 放入/WEB-INF/lib 并根据前面链接的TLD 文档声明标签库。
您可以使用<c:if> 或<c:choose> 标记在页面流中引入条件。您可以使用<c:forEach> 标记来迭代JSP 中的数组或集合。您的功能要求非常模糊,但这里有一个启动示例:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!doctype html>
<html lang="en">
<head>
<title>SO question 2690671</title>
</head>
<body>
<form>
Cols:
<select name="cols">
<option>3</option><option>4</option><option>6</option>
</select><br>
Rows:
<select name="rows">
<option>3</option><option>4</option><option>6</option>
</select><br>
<input type="submit">
</form>
<c:if test="${param.cols > 0 && param.rows > 0}">
<p>Here is a table with ${param.cols} cols and ${param.rows} rows.
<table>
<c:forEach begin="1" end="${param.rows}">
<tr>
<c:forEach begin="1" end="${param.cols}">
<td>cell</td>
</c:forEach>
</tr>
</c:forEach>
</table>
</c:if>
</body>
</html>
很简单,不是吗?您实际上不需要 servlet,除非您想预处理行/列并实现一些验证/业务逻辑。只需将表单操作更改为 servlet URL,然后让 servlet 使用 requestdispatcher 将请求转发到 JSP,这在之前的几个答案中已经向您解释过。不要在 Servlet 中处理 HTML。没有必要这样做。
毕竟,您确实需要先了解一些基本的 JSP/Servlet 教程/书籍,而不是在黑暗中摸索。你可以找到优秀的在线 JSP/Servlet 教程here,你可以找到好书here 和here。把你的项目放在一边,专心学习这些东西。
【讨论】: