【问题标题】:jsp servlet pass variable in table row to servlet without formjsp servlet将表行中的变量传递给没有表单的servlet
【发布时间】:2013-06-29 11:17:15
【问题描述】:
<table id="searchTable"><%
for (int i=0; i<userList.size();i++){
User user=userList.get(i);%>
<tr>
<td id="leftSearchResult">
<span class="resultUsername">Name: <%=user.getUserName()%></span></br>
</td>
<td>
<!--Button to visit profile here-->
</td>
</tr>
<%}%>
</table>

我有这个搜索用户功能,并且对于每个结果,都会使用用户的用户名创建一个表行。我想要做的是,当您按下表格行中的访问配置文件按钮时,它将将该行中的用户名发送到 servlet。我怎么做?此外,您可以在不使用表单的情况下将变量传递给 servlet 吗?我知道如何使用request.getParameter() 将数据从表单检索到 servlet,但不知道在这种情况下该怎么做。 (userList 数组是执行搜索功能时从数据库中检索的 User 对象的数组列表。此处未包含该代码部分。)

【问题讨论】:

    标签: database jsp servlets html-table


    【解决方案1】:

    使用带有请求参数的链接。并学会不要在 JSP 中使用 scriptlet。请改用 JSP EL 和 JSTL:

    <table id="searchTable">
        <c:forEach items="${userList}" var="user">
            <tr>
                <td id="leftSearchResult">
                    <span class="resultUsername">
                        Name: <c:out value="${user.userName}"/>
                    </span>
                </td>
                <td>
                    <a href="<c:url value="/userDetails">
                                 <c:param name="userId" value="${user.id}"/>
                             </c:url>">Details</a>
                </td>
            </tr>
        </c:forEach>
    </table>
    

    上面将生成一个带有类似/userDetails?userId=1234 的URL 的链接,然后映射到/userDetails 的servlet 将能够使用request.getParameter("userId") 访问用户ID。

    【讨论】:

    • 我复制了你所做的,但生成的链接就像 /
      您需要在 webapp 的类路径中包含 JSTL,并在 JSP 的顶部声明。不要只是复制代码而不理解它。首先了解它是如何工作的。阅读stackoverflow.com/tags/jstl/info
    猜你喜欢
    • 2013-03-22
    • 1970-01-01
    • 2012-03-18
    • 1970-01-01
    • 2013-06-10
    • 2011-04-06
    • 1970-01-01
    • 2014-09-03
    • 1970-01-01
    相关资源
    最近更新 更多