Получение параметра из ServletRequest создает исключение invalidStateException - PullRequest
1 голос
/ 21 марта 2019

У меня есть этот код в одном из фильтров, который вызывается при каждом запросе.

httpRequest.getParameter(tabId);

Мой запрос постоянно прерывался после фильтров. При отладке я обнаружил, что этот код выдает это исключение в первый раз, теперь скажите, что если я выполню этот код с помощью «inspect», он сгенерирует это исключение, и если я выполню его снова с помощью «inspect» или «forward debug», он выдаст «null» и завершает поток. Я не понимаю, почему это работает так при первом выполнении этого кода, поскольку в запросе нет "tabId".

18:44:03,443 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/workbench].[action]] (http-0.0.0.0:8090-5) JBWEB000236: Servlet.service() for servlet action threw exception: java.lang.IllegalStateException: JBWEB002004: More than the maximum number of request parameters (GET plus POST) for a single request (128) were detected. Any parameters beyond this limit have been ignored. To change this limit, set the maxParameterCount attribute on the Connector.
    at org.apache.tomcat.util.http.Parameters.addParameter(Parameters.java:184) [jbossweb-7.5.28.Final-redhat-1.jar:7.5.28.Final-redhat-1]
    at org.apache.tomcat.util.http.Parameters.processParameters(Parameters.java:356) [jbossweb-7.5.28.Final-redhat-1.jar:7.5.28.Final-redhat-1]
    at org.apache.tomcat.util.http.Parameters.processParameters(Parameters.java:213) [jbossweb-7.5.28.Final-redhat-1.jar:7.5.28.Final-redhat-1]
    at org.apache.catalina.connector.Request.parseParameters(Request.java:2885) [jbossweb-7.5.28.Final-redhat-1.jar:7.5.28.Final-redhat-1]
    at org.apache.catalina.connector.Request.getParameter(Request.java:1303) [jbossweb-7.5.28.Final-redhat-1.jar:7.5.28.Final-redhat-1]
    at org.apache.catalina.connector.RequestFacade.getParameter(RequestFacade.java:350) [jbossweb-7.5.28.Final-redhat-1.jar:7.5.28.Final-redhat-1]
    **at com.xyz.IdentityFilter.doFilter(IdentityFilter.java:58) [projectX.jar:]**

1 Ответ

0 голосов
/ 21 марта 2019

Тело запроса уже использовано, вы должны обернуть его в свой фильтр (перед вызовом doFilter(...)), если вам нужно выполнить бизнес-логику с ним.См. здесь для примера.

...