Naga Sai A가 지적한 것처럼, HTML 문서에는 ID 값이 중복되어서는 안됩니다. 각 입력에 고유 한 ID가 있는지 확인하십시오.
정확하게 이해했다면 각 행 데이터마다 다른 값을 사용할 필요가 없습니다. 당신은 그들을 위해 다른 이름이 필요합니다
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.Arrays" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>Change Data</title>
</head>
<body>
<%!
public class Data {
private int id;
public Data(int id) {
this.id = id;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
List<Data> dataList = Arrays.asList(new Data(10), new Data(11), new Data(12));
%>
<% request.setAttribute("dataList", dataList); %>
<c:url var="controller" value="/controller"/>
<p>Choose your actions for data</p>
<form action="${controller}" method="POST">
<table>
<thead>
<tr>
<td>insert</td>
<td>update</td>
<td>delete</td>
</tr>
</thead>
<tbody>
<c:forEach var="data" items="${dataList}">
<tr>
<td>
<label for="insert-${data.id}">Insert ${data.id}: </label>
<input type="radio" name="recordIds${data.id}" value="insert" id="insert-${data.id}"/>
</td>
<td>
<label for="update-${data.id}">Update ${data.id}: </label>
<input type="radio" name="recordIds${data.id}" value="update" id="update-${data.id}"/>
</td>
<td>
<label for="delete-${data.id}">Delete ${data.id}: </label>
<input type="radio" name="recordIds${data.id}" value="delete" id="delete-${data.id}"/>
</td>
</tr>
</c:forEach>
</tbody>
</table>
<input type="submit" value="Submit actions">
</form>
</body>
</html>
당신의 doPost와 서블릿에 입력을 리디렉션 형태
을 줄 것이다() 메소드
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Collections.list(request.getParameterNames()).forEach(paramName -> {
if (paramName.startsWith("recordIds")) {
String id = paramName.substring(9, paramName.length());
String action = request.getParameter(paramName);
try {
response.getWriter().println("Selected action for data with id=" + id + " is " + action);
} catch (IOException ex) {
ex.printStackTrace();
}
}
});
}
하는 결과를 인쇄합니다.
시 : 이 같은 데이터 클래스를 정의하지 않습니다는 the use of scriplets is highly discouraged, 당신은 별도로 데이터 클래스를 생성하고 JSP에서 자바 코드를 피하려고합니다 나는 데모 목적을 위해 그것을 사용에만
구문 오류, 시도 모든 라디오 버튼에 대해 동일한 ID를 사용하지 마십시오 –
변경할 수 있습니다. 하지만 그것은 내 문제를 해결하는 데 도움이되지 않습니다. – johnsam