request.getParameter(“String”)始终返回null。为什么?

时间:2012-05-02 04:07:06

标签: java html jsp servlets

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

TesterServlet类的Servlet代码片段

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

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

3 个答案:

答案 0 :(得分: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资源/示例。

另见:

答案 1 :(得分: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中的隐藏

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

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

答案 2 :(得分: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"