我送使用jQuery的POST請求:不能傳遞參數通過jQuery POST到Servlet的
$.post(
'test',
{ foo: 'bar'}
);
而且我有處理這一個簡單的servlet:
@WebServlet("/test")
public class TestServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
Map<String, String[]> parameterMap = req.getParameterMap();
}
}
但requestMap在servlet中結果是空的。我究竟做錯了什麼?
編輯: 忘了提及我從JSF Facelet頁面調用此腳本。不要問我爲什麼要麻煩手動發佈Ajax請求,以及爲什麼我使用servlet來處理它們。說來話長。我知道這不是JSF的方式。
@BalusC的答案後,我嘗試添加一個Servlet過濾器是這樣的:
@WebFilter(urlPatterns="/test")
public class TestFilter implements Filter {
@Override
public void destroy() { }
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
Map<String, String[]> parameterMap = request.getParameterMap();
chain.doFilter(request, response);
}
@Override
public void init(FilterConfig filterConfig) throws ServletException { }
}
和它的工作!不僅我能夠獲取過濾器中的參數,還可以在servlet中訪問這些參數!那麼,有人能解釋我這是什麼魔法嗎?
你用'螢火蟲'看到了什麼? – gdoron 2012-04-15 11:57:07
我看到它實際上正在發送POST請求。同時,我在Eclipse中設置了斷點,並且我確實瞭解了這個請求,但是沒有任何參數......我使用Chrome開發人員工具,並且它顯示請求實際上已經發布了所有必需的參數。 – jFrenetic 2012-04-15 12:00:32