我想通过锚标记向servlet发送多个参数。 但问题是一个参数是java脚本方法的返回值。 更多解释;
<% int cnt = 1;%>
<c:forEach items="${requestScope.AllUsers}" var="user">
<tr id="<%=cnt%>">
<td >${user.userName}</td>
<td>${user.emailAddress}</td>
<td><a onclick="return getUserName(<%=cnt%>)" href="servlet?">modify</a></td>
</tr>
<%cnt++;%>
</c:forEach>
//这里我想使用从getUserName(java脚本方法)返回的返回值和另一个参数(它的名称是页面)并在点击修改hyberlink时将其发送到servlet 我该怎么做?
答案 0 :(得分:1)
onclick
处理程序中的返回值不符合您的预期。 onclick
只需要一个true或false返回值,如果返回false,则取消链接导航。相反,您希望直接从onclick
处理程序将用户发送到您想要的URL。尝试这样的事情:
<a onclick="return redirect(<%=cnt%>)" href="#">modify</a>
<script type="text/javascript">
function redirect(cnt) {
var user = getUserName(cnt);
window.location = 'servlet?other_parameters_here&user=' + user;
return false;
}
</script>
答案 1 :(得分:1)
让JSP / EL相应地生成链接。 E.g。
<a href="servlet?page=pagename&username=${user.userName}">modify</a>
&
用于分隔多个参数。
或者更好的是,使用<c:url>
对参数进行适当的URL编码,以避免因用户名中的URL保留字符而导致无效的URL。
<c:url value="servlet" var="servletUrl">
<c:param name="page" value="pagename" />
<c:param name="username" value="${user.userName}" />
</c:url>
<a href="${servletUrl}">modify</a>
与此问题无关,请查看varStatus
的{{1}}属性来替换那个丑陋的c:forEach
scriptlet 。
cnt
请注意,HTML <c:forEach items="${requestScope.AllUsers}" var="user" varStatus="loop">
<tr id="${loop.index + 1}">
...
可能不以数字开头。这是非法的。而是使用像
id
答案 2 :(得分:0)
<强>第1页强>:
[a href="NewServlet?id=name&password=1234"/]
<强>第2页强>:
String a=request.getParameter("id");
String b=request.getParameter("password");
<强>输出强>:
a=name
b=1234
使用&
符号,我们可以添加n
参数...