0
// jsp snippet
<button name="TesterButton" value="TesterButton" onClick="location.href='TesterServlet';">

类 TesterServlet 的 Servlet Snippet

writer.println( (String)request.getParameter("TesterButton") ); // always returns null

上面的 servlet 总是返回 null。为什么它返回 null ?

4

3 回答 3

3

它完全按照您告诉代码的方式工作:将窗口位置更改为给定的 URL。所以,没有惊喜。

真正想要的应该编码如下:

<form action="TesterServlet">
    <input type="submit" name="TesterButton" value="TesterButton" />
</form>

或者如果你出于某种原因真的坚持使用 JS:

<button name="TesterButton" value="TesterButton" onclick="location.href='TesterServlet?TesterButton=TesterButton';">

请注意,使用onClick而不是onclick表示您可能正在阅读过时或糟糕的 HTML 资源/示例。

也可以看看:

于 2012-05-02T04:16:38.543 回答
1

即使在表单内,按钮也不会在请求中发送。

更新:

如果要发送单击按钮的值(有点奇怪),则需要使用隐藏元素并在调用 servlet 之前设置值:

<form id="myForm" method="post">
    <input type="hidden" id="hidButtonValue" />
    <button id="TesterButton" value="TesterButton" onclick="document.getElementById('hidButtonValue').value=this.value; location.href='TesterServlet';"
</form>

现在你可以在你的 servlet 中调用 hidden

writer.println( (String)request.getParameter("hidButtonValue") );

此外,最好将onclick代码封装在 JavaScript 函数中。

于 2012-05-02T04:08:23.737 回答
0

一种快速简便的方法是使用带有隐藏字段的表单:

<form action="TesterServlet">
    <input type="hidden" name="testField" id="test" value="SomeValue" />
    <input type="submit" value="Submit" />
</form>

然后在您的 servlet 中:

writer.println( (String)request.getParameter("testField") ); // Should return "SomeValue"
于 2012-05-02T04:21:11.960 回答