前提,delete.action实现类UserDeleteAction中的属性为:
private String fd_username;
public String getFd_username() {
return fd_username;
}
public void setFd_username(String fd_username) {
this.fd_username = fd_username;
}
故而,用超链接传参时的参数名称一定要为“fd_username”,这样struts2框架才会自动将参数名“fd_username”的值赋值给UserDeleteAction中的属性fd_username
1. 只使用<a>标签或者<s:a>
<s:a href="delete?fd_username=#user.fd_username">删除1</s:a>
取不到值
<s:a href="delete?fd_username=%{#user.fd_username}">删除1</s:a>
<s:a href="delete?fd_username=${#user.fd_username}">删除1</s:a>
报错
java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
注:一个舍友可用该方法实现并没报错,我和另一个舍友则不行并报相同的错,可能是舍友使用的tomcat版本是9以上,我和另一个舍友不行是使用了9以下,由于项目赶时间,待以后再做验证,现只做记录,欢迎大家实测
2. 在<a>标签里嵌套<s:url>标签 (实测可用)
<table border="1">
<tr>
<th>用户名</th>
<th>用户类型</th>
<th>性别</th>
<th>爱好</th>
<th>出生日期</th>
<th>电子邮箱</th>
<th>自我介绍</th>
<th>操作</th>
</tr>
<s:iterator var="user" value="#request.list" status="status">
<tr>
<td><s:property value="#user.fd_username" /></td>
<td><s:property value="#user.fd_usertype" /></td>
<td><s:property value="#user.fd_gender" /></td>
<td><s:property value="#user.fd_hobby" /></td>
<td><s:property value="#user.fd_birthdate" /></td>
<td><s:property value="#user.fd_email" /></td>
<td><s:property value="#user.fd_introduction" /></td>
<td>
<a href="
<s:url action="delete">
<s:param name="fd_username" value="#user.fd_username"/>
</s:url>">删除2
</a>
</td>
</tr>
</s:iterator>
</table>
3. 使用<s:url>标签 (实测可用)
<td>
<s:url id="idUrl" action="delete">
<s:param name="fd_username" value="#user.fd_username"></s:param>
</s:url>
<s:a href="%{idUrl}">删除2</s:a>
</td>
其实相当于上一种写法
注: value="%{#user.fd_username}" 也可以实现