我正在从JSP调用POST方法,但是默认情况下,在Servlet中调用GET,并且请求中都没有post参数。
我已经检查了所有现有问题,但是当我通过javascript方法提交表单时,没有一个问题能够解决我的问题。
相同的JSP,js和Java代码在我的实时环境中运行良好。
所以我无法理解,是某个版本问题还是什么。尽管如此,如果可以进行任何更改以使其正常工作,我仍将代码放在下面。
我尝试将编码标签放入enctype格式,因为在一种解决方案中,编码有时可能是一个问题,但没有用。
JSP代码:
//web.xml configuration is done properly
<form action="FileDownloadServlet" method="POST" id="fDownload">
<input type="hidden" name="fileId" id="fileId"/>
<input type="hidden" name="status1" id="status1"/>
<input type="hidden" name="volume1" id="volume1"/>
<input type="hidden" name="fileType" id="fileType" value="summaryPDF"/>
<input type="hidden" name="documentType" id="documentType" value="SO"/>
</form>
JS代码如下:
//It is fetching the below values from a form on the current page storing values in hidden and it is printing these values in js properly.
var docID = dwr.util.getValue("docId");
var status = dwr.util.getValue("status");
var volume = dwr.util.getValue("volume");
jq('#fileId').val(docID);
jq('#status1').val(status);
jq('#volume1').val(volume);
document.forms[0].action = "FileDownloadServlet";
document.forms[0].submit();
Servlet代码:
//In form we gave POST as form method but still output is calling doGet
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("calling doGet");
processRequest(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("calling doPost");
processRequest(request, response);
}
它每次都调用GET方法。
答案 0 :(得分:0)
Jaromanda X在评论中建议。 我做了以下更改,现在可以正常工作了。
document.forms.formID.action = "FileDownloadServlet";
document.forms.formID.submit();