通过锚标记向servlet发送多个参数

时间:2010-10-08 19:26:56

标签: javascript jsp

我想通过锚标记向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 我该怎么做?

3 个答案:

答案 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参数...