// 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?
答案 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"