表更改取决于servlet的下拉列表值

时间:2010-04-22 12:21:19

标签: html jsp servlets

我想要了解的是以下内容: 在JSP x中,我有一个3个下拉列表和一个名为edit的按钮,当用户单击此按钮时,应该显示动态表。现在修改此表以对应这3个下拉列表中的值。所以它可以是3 cols或4 cols甚至6 cols,它取决于所选的值。所以我尝试的是使用servlet来getParameterif子句构造html然后转发响应。您对JSP中可以使用的结构有什么建议吗?谢谢。

1 个答案:

答案 0 :(得分:1)

您不应该在servlet中构造HTML。在JSP中执行此操作。您可以使用JSTL来控制JSP页面中的页面流。只需在/WEB-INF/lib中删除jstl-1.2.jar,然后根据上述TLD文档声明taglib。

您可以使用<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,而requestdispatcher之前已在几个答案中向您解释过。不要在Servlet中处理HTML。没有必要这样做。

毕竟,你真的需要先通过一些基本的JSP / Servlet教程/书籍而不是在黑暗中刺伤。您可以找到优秀的在线JSP / Servlet教程here,您可以找到好书herehere。把你的项目放在一边,集中精力学习这些东西。