Сервлет jsp передает переменную в строке таблицы сервлету без формы
<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>
У меня есть эта функция поиска пользователя, и для каждого результата создается строка таблицы с именем пользователя. Что я хочу сделать, так это то, что когда вы нажмете кнопку профиля посещения в строке таблицы, он отправит имя пользователя в этой строке сервлету. Как я могу это сделать? Кроме того, вы можете передавать переменные сервлетам без использования форм? Я знаю, как получить данные из форм в сервлет с request.getParameter()
, но не уверен, что делать в этой ситуации. (Массив userList представляет собой массив списков объектов User, извлеченных из базы данных при выполнении функции поиска. Не включил эту часть кода здесь.)
1 ответ
Используйте ссылку с параметром запроса. И научитесь не использовать скриптлеты в JSP. Вместо этого используйте 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>
Выше будет сгенерировать ссылку с URL-адресом, как /userDetails?userId=1234
и сервлет сопоставлен с /userDetails
затем сможет получить доступ к идентификатору пользователя с помощью request.getParameter("userId")
,