在做web项目练习时遇到了一个需要为href拼接动态变量的问题,在jsp中有这么一段代码实现用户的删改功能。
首先摆出我一开始错误的代码来说明问题。
<html>
<head>
<title>人员管理</title>
</head>
<body>
<%
//从后端Servlrt获取的一个储存我自定义的Persion对象的List
List<Persion> list = (List<Persion>) request.getAttribute("persionlist");
%>
<%--下面设置了一个表格来展示List中的数据并提供修改的功能--%>
<table border="2px">
<caption>用户管理</caption>
<thead>
<tr>
<th>用户名</th>
<th>年龄</th>
<th>性别</th>
<th>住址</th>
<th>编辑</th>
</tr>
</thead>
<tbody>
<%
for(Persion p : list){
%>
<tr>
<td><%=p.getName()%></td>
<td><%=p.getAge()%></td>
<td><%=p.getSex()%></td>
<td><%=p.getAddress()%></td>
<td>
<a href="/persion.do?method=delete&name=p.getName()&age=p.getAge()">删除</a>
<a>&</a>
<a href="/persion.do?method=update&name=p.getName()&age=p.getAge()">修改</a>
</td>
</tr>
<%
}
%>
</tbody>
</table>
</body>
</html>
网页中的效果如下
在上面的代码中,为了实现删除和修改,向后端的Servlet发送这张表格中每行的对应的值,就需要在href中拼接相应行的数据,所以需要在每一次循环中使用当前循环中的p变量。但是上面的那样直接在href中拼接时不被允许的。
经查阅资料我得知
你可以先设置一个字符串
String str="************************";
然后按照下面的格式传给href就可以了
<a href="<%=str %>" >删除</a>
因此实际上是在定义String的时候进行拼接再传给href就行了;
下面是正确的代码
<html>
<head>
<title>人员管理</title>
</head>
<body>
<%
List<Persion> list = (List<Persion>) request.getAttribute("persionlist");
%>
<%----%>
<table border="2px">
<caption>用户管理</caption>
<thead>
<tr>
<th>用户名</th>
<th>年龄</th>
<th>性别</th>
<th>住址</th>
<th>编辑</th>
</tr>
</thead>
<tbody>
<%
for(Persion p : list){
%>
<tr>
<%
String del = "/persion.do?method=delete&name=" + p.getName() + "&age=" + p.getAge();
String up = "/persion.do?method=delete&name=" + p.getName() + "&age=" + p.getAge() +
"&sex=" + p.getSex() + "&address=" + p.getAddress();
%>
<td><%=p.getName()%></td>
<td><%=p.getAge()%></td>
<td><%=p.getSex()%></td>
<td><%=p.getAddress()%></td>
<td>
<a href="<%=del%>">删除</a>
<a>&</a>
<a href="<%=up%>">修改</a>
</td>
</tr>
<%
}
%>
</tbody>
</table>
</body>
</html>