我有一个JSP,其表单如下所示:
<form method="GET" action="ManagerLogicServlet?action=salesreport" >
<select name="monthList">
<option value="1">January</option>
<option value="2">February</option>
<option value="3">March</option>
<option value="4">April</option>
<option value="5">May</option>
<option value="6">June</option>
<option value="7">July</option>
<option value="8">August</option>
<option value="9">September</option>
<option value="10">October</option>
<option value="11">November</option>
<option value="12">December</option>
</select>
<input type="submit" value="Submit">
</form>
我正在尝试发送一个带有属性action = salesreport的查询字符串,这将是一个返回所选月份的销售报告的条件(不要忘记缺少的默认值)。我将表单提交给具有以下代码片段的ManagerLogicServlet:
..String action = request.getParameter("action");
if (action.equalsIgnoreCase("salesreport")){
forward = SALES_REPORT;
int month = Integer.parseInt(request.getParameter("monthList"));
String monthString = new DateFormatSymbols().getMonths()[month-1];
request.setAttribute("monthString", monthString);
request.setAttribute("salesReport", salesDAO.getSalesReport(month));
} else if..
但是action属性设置为null。这是为什么?
答案 0 :(得分:2)
由于您的表单使用GET
方法,因此action
属性中的参数将被丢弃。如果您坚持使用GET
,那么您可以包含一个<input>
标记,其中包含您希望传递给servlet的参数。试着这样做:
<form method="GET" action="ManagerLogicServlet?action=salesreport" >
<input type="hidden" name="action" value="salesreport">
<select name="monthList">
<option value="1">January</option>
...
</select>
<input type="submit" value="Submit">
</form>
替代方法是让您保留代码,但将表单的方法更改为POST
。
答案 1 :(得分:0)
工作正常。 我试过这个
<强> HTML 强>
<form action="AnyServlet?action=salesreport" method="post">
<input type="submit" value="Submit Data" />
</form>
AnyServlet.java
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String action = request.getParameter("action");
System.out.println("action=="+action);
}
输出
action==salesreport
<强>更新强>
当我改变了&#34; post&#34; to&#34; get&#34;我也遇到了问题。如果你想和&#34;得到&#34;你可以使用隐藏的输入字段。