<c:forEach var="it" items="${sessionScope.projDetails}">
<tr>
<td>${it.pname}</td>
<td>${it.pID}</td>
<td>${it.fdate}</td>
<td>${it.tdate}</td>
<td> <a href="${it.address}" target="_blank">Related Documents</a></td>
<td>${it.pdesc}</td>
<form name="myForm" action="showProj">
<td><input id="button" type="submit" name="${it.pID}" value="View Team">
</td>
</form>
</c:forEach>
参考上面的代码,我从一些servlet获取会话对象projDetails
,并在JSP中显示其内容。由于arraylist projDetails
有多个记录,因此字段pID
也会采用不同的值,并且显示将是一个包含多行的表。
现在,当用户基于该行的“pID”点击“View Team”(将在每一行中)时,我想调用一个servlet showProj
。
有人可以告诉我如何将用户点击JSP的特定pID
传递给servlet吗?
答案 0 :(得分:3)
而不是每个不同的pID <input>
,您可以使用链接将pID作为查询字符串传递给servlet,如:
<a href="/showProj?pID=${it.pID}">View Team</a>
在showProj
servlet代码中,您将通过request
方法中的doGet
对象访问查询字符串,如:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
String pID = request.getParameter("pID");
//more code...
}
以下是Java servlet的一些参考:
答案 1 :(得分:1)
将pID
传递给隐藏的输入字段。
<td>
<form action="showProj">
<input type="hidden" name="pID" value="${it.pID}">
<input type="submit" value="View Team">
</form>
</td>
(请注意,我使用<form>
重新排列<td>
以使其成为有效的HTML,我也从按钮中删除了id
,因为它在HTML中无效多个元素具有相同的id
)
这样你就可以按如下方式在servlet中获取它:
String pID = request.getParameter("pID");
// ...
答案 2 :(得分:-1)
在按钮上定义onclick功能并传递参数
<form name="myForm" action="showProj">
<input type='hidden' id='pId' name='pId'>
<td><input id="button" type="submit" name="${it.pID}" value="View Team" onclick="populatePid(this.name)">
</td>
.....
定义javascript函数:
function populatePid(name) {
document.getElementById('pId') = name;
}
并在servlet中:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
String pID = request.getParameter("pId");
.......
}