Скрытое поле в spring MVC
Я хотел использовать скрытый тег spring в нижнем коде. Возможно ли это в нижнем коде, что я должен написать в своем контроллере, чтобы сделать это или что я делаю, правильно.
<c:forEach var="record" items="${records}">
<tr>
<td>
<form:form id="myForm" action="list.html" method="post">
<input type="hidden" name="record" value="${record}" />
<a href="#" onclick="document.getElementById('myForm').submit();">Submit</a>
</form:form>
</td>
</tr>
</c:forEach>
Любая помощь будет высоко оценена.
Спасибо
Ответы
Ответ 1
Вы находитесь на правильном пути [в зависимости от того, какова ваша поддержка bean], но для того, чтобы автоматически привязать идентификатор как скрытое поле к представлению "Человек" bean (в этом примере), вы будет делать что-то вроде:
<c:forEach var="person" items="${persons}" varStatus="status">
<tr>
<c:set var="personFormId" value="person${status.index}"/>
....
<form id="${personFormId}" action="${deleteUrl}" method="POST">
<input id="id" name="id" type="hidden" value="${person.id}"/>
</form>
<td>${person.firstName}</td>
<td>${person.lastName}</td>
....
</tr>
</c:forEach>
Если вы хотите отобразить скрытое поле, вы должны использовать тег form:hidden
:
<form:hidden path="id" />
Посмотрите раздел скрытого входного тега в документах Spring.
Ответ 2
В оставшейся части этого ответа замените "delete" и "deteted" на операцию, которую вы пытаетесь реализовать. например "взорванный", "укушенный" или "отредактированный"
Указанный JSP-код имеет несколько проблем.
- Отсутствует тег close для элемента
<td>
.
- Ваша форма отправляется на "items.html". Кажется, это html-страница. Если это так, ваше действие формы 0% правильно.
- каждая форма имеет одинаковый идентификатор, поэтому вызов
getElementById()
не может работать.
-
href="#"
заставит вашу страницу прокручивать вверх, когда пользователь нажимает на ссылку.
- Вы не определяете пользователю запись, которую нужно удалить.
Вот что я думаю, что вы хотите:
<c:forEach var="record" items="${records}">
<tr>
<td>
<form:form method="post">
<input type="hidden" name="activity" value="delete"/>
<input type="hidden" name="record" value="${record}"/>
<a href="javascript:this.form.submit()">Delete ${record}</a>
</form:form>
<td>
</tr>
</c:forEach>
Отсчет будет отправлен на текущий контроллер spring. В сообщение включены два поля: "активность", которая идентифицирует это как удаление и "запись", которая идентифицирует записываемую запись. На основе ваших потребностей добавьте action="some url"
в тег form:form
.
Ответ 3
Думаю, я решил проблему. Если я пишу тег ввода, как этот
<form:hidden path="id" value="${record}" />
таким образом я могу переназначить значение скрытой переменной, но когда я просматриваю визуализированный html-код, как это,
<input type="hidden" value="0" name="record" value="10"/>
сгенерируйте атрибут value дважды и возьмите нужное значение, которое равно 10. Но оно решает мою проблему. Если у кого есть дополнительные комментарии по этому поводу, это будет оценено.