我正在Web应用程序上使用纯JSP(不是JSF选项)。 在JSP文件中,我有一个表格,并在每一行中显示每个学生。 另外,在每一行中,我都希望有一个“编辑”按钮,该按钮将重定向到一个页面,我们可以在其中编辑和删除该学生。

到目前为止,我认为最好的办法是放置一个可提交的表单,每行中仅包含一个按钮。

<table border="1">
    <tr>
        <th>Name</th>
        <th>LastName</th>
        <th>Send Message</th>
        <th>Erase</th>
    </tr>
    <c:forEach items="${students}" var="bean">
        <tr>
            <td>${bean.name }</td>
            <td>${bean.lastName }</td>
            <td><input type="button" name="edit" value="Do!"
                onclick="foo();" /></td>
            <td><form action="<%="EditStudent?studentid=6" %>"><input type="submit" value="Edit" /></form></td>
        </tr>
    </c:forEach>
</table>

表单提交URL仅用于测试,因此将硬编码的“ 6”参数作为学生ID。 但是,当我按下按钮时,将重定向到URL为"http://localhost:8080/JSPProj/EditStudent?" ,我可以清楚地看到问号后的所有文本都将被忽略! 如果删除问号,则URL重定向有效(但是无法将我想要的参数传递给下一个servlet)。

谁能给我任何关于为什么发生这种情况的见解?

PS。 我也尝试过EL,并且发生了同样的事情。

===============>>#1 票数:2 已采纳

首先,您应该指定您的method = get或method = post。 但这只是我的挑剔。 问题是这样的:不要放你的? 和操作网址中的参数。 将参数放在输入标签中。

<form action='EditStudent'>
<input type='hidden' name='studentid' id='studentid' value='6' />
<input type='submit' value='Edit' />
</form>

编辑:实际上GET vs POST不是挑剔的。 这么说让我有​​些flip异。 这很重要。 默认情况下,浏览器会将其视为GET,这意味着参数将在地址栏中可见,并且可以由最老练的用户轻松更改。 使用POST至少需要更加复杂。 尽管显然,为了安全起见,您不应该依赖可公开查看的HTML。

输入Type ='Hidden'并不意味着用户显然在查看源代码时也看不到它,而只是没有在其中放置任何文本框。

===============>>#2 票数:1

1)首先,您不应该在给定的上下文中使用表单操作,因为在这种情况下使用POST方法不合逻辑。

2)绝对不要在jsp表达式语言中使用静态内容。 ie: action="<%="EditStudent?studentid=6" %>"

3)在给定的情况下,您需要为每个列出的学生使用<a> ,并根据他们的ID将他们重定向到servlet。 而且这种方法将使用GET方法。

这是您应该 <a href="EditStudent?studentid=${bean.studentID}"> click me </a>

问候,

  ask by csotiriou translate from so

未解决问题?本站智能推荐: