Сервлет 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"),

Другие вопросы по тегам