[ 
https://issues.apache.org/jira/browse/CXF-7071?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15548574#comment-15548574
 ] 

Sergey Beryozkin commented on CXF-7071:
---------------------------------------

I'm not sure what you mean that the root cause is in the JAXRSUtils code. The 
only reason you see no parameter values returned when you work directly against 
HttpServletRequest (unless that property is set) is that CXF 
AbstractHttpDestination needs to set HTTP InputStream on the current Message.

JAXRSUtils will not consult the consumed POST form input stream when resolving 
@QueryParam - these can only come from HTTP URL query component.

But as I said, given that you do prefer working directly with 
HttpServletRequest, but also because users keep asking about it quite 
regularly, I will consider overriding CXF HttpServletRequest wrapper to 
ovverride parameter related methods (in fact 4 of them). I won't recommend 
users doing it - as I said - it won't work for cases where the encoded values 
have to be made available - and it is outside of JAX-RS API - but if it can 
help some users then I guess it might make sense    

> HttpServletRequest.getParameter only get String from query not both posted 
> form data
> ------------------------------------------------------------------------------------
>
>                 Key: CXF-7071
>                 URL: https://issues.apache.org/jira/browse/CXF-7071
>             Project: CXF
>          Issue Type: Bug
>          Components: JAX-RS
>    Affects Versions: 3.1.7
>            Reporter: Neal Hu
>             Fix For: 3.1.8
>
>
> The http request:
>  POST /dubbott-demo-provider/v1.0/users/beanparam HTTP/1.1
> HOST: localhost:8080
> accept: text/plain
> content-type: application/x-www-form-urlencoded
> content-length: 12
> pageIndex=99
> The resource method returns null:
> {code:java}
>     public String beanParam(@Context HttpServletRequest req, String ak) {
>         String pageIndex = req.getParameter("pageIndex")    
>         return pageIndex;
>     }
> {code}
> From the servlet 3.1 API doc:
> String javax.servlet.ServletRequest.getParameter(String name)
> Returns the value of a request parameter as a String, or null if the 
> parameter does not exist. Request parameters are extra information sent with 
> the request. For HTTP servlets, parameters are contained in the query string 
> or posted form data.
> if we add below servlet filter:
> {code:java}
>       public void doFilter(ServletRequest request, ServletResponse response, 
> FilterChain chain) throws IOException, ServletException {
>               System.out.println(request.getParameter("pageIndex") );
>               chain.doFilter(request, response);
>       }
> {code}
> The output is "99" the response is the same "99".
> As a conclusion the CXF HttpServletRequest doesn't comply the Servlet 3.1 API 
> Spec.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to