Ich schicke eine POST-Anforderung mit jQuery Servlet:kann nicht Parameter übergeben über jQuery POST
$.post(
'test',
{ foo: 'bar'}
);
Und ich habe ein einfaches Servlet für die Verarbeitung von es:
@WebServlet("/test")
public class TestServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
Map<String, String[]> parameterMap = req.getParameterMap();
}
}
Aber die requestMap im Servlet stellt sich als leer heraus. Was mache ich falsch?
Bearbeiten: Vergessen zu erwähnen, dass ich dieses Skript von der JSF Facelet Seite aufrufen. Fragen Sie mich nicht, warum ich Ajax-Anfragen manuell ausstellen muss und warum ich sie mit Servlets verarbeite. Das ist eine lange Geschichte. Ich weiß, dass es kein JSF'scher Weg ist.
Nach @BalusC Antwort habe ich versucht, einen Servlet-Filter wie folgt ergänzt:
@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 { }
}
Und es hat funktioniert! Nicht nur ich konnte die Parameter im Filter abrufen, sondern auch im Servlet! Kann mir jemand erklären, welche Art von Magie das ist?
Was siehst du mit 'firebug'? – gdoron
Ich sehe, dass es tatsächlich eine POST-Anfrage sendet. Gleichzeitig habe ich den Breakpoint in Eclipse gesetzt, und ich habe wirklich diese Anfrage, aber ohne Parameter ... Ich benutze Chrome Developer Tools und es zeigt, dass die Anfrage tatsächlich mit allen erforderlichen Parametern gepostet wird. – jFrenetic