Mantis - Resin
|
|||||
Viewing Issue Advanced Details | |||||
|
|||||
ID: | Category: | Severity: | Reproducibility: | Date Submitted: | Last Update: |
4431 | minor | always | 03-09-11 20:10 | 04-06-11 16:41 | |
|
|||||
Reporter: | mhixson | Platform: | |||
Assigned To: | ferg | OS: | |||
Priority: | normal | OS Version: | |||
Status: | closed | Product Version: | 4.0.15 | ||
Product Build: | Resolution: | fixed | |||
Projection: | none | ||||
ETA: | none | Fixed in Version: | 4.0.17 | ||
|
|||||
Summary: | 0004431: Including a query string in resin:Forward's target results in duplicated request parameters | ||||
Description: |
Say I include the following in my web.xml: <resin:Forward regexp="^/foo$" target="/bar?a=1" /> And I define the following servlet: @WebServlet(urlPatterns="/bar") public class BarServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.getWriter().write( Arrays.toString( request.getParameterValues("a"))); } } Then I make a request to this URL: /foo?a=2 I see an output of "[2, 1, 2]" rather than the expected "[1, 2]". It seems that any parameters I define in the request are put into the parameter map twice. |
||||
Steps To Reproduce: | |||||
Additional Information: |
I notice that in my BarServlet example, the following is true: request.getQueryString(); // Returns "a=1&a=2". request.getAttribute( RequestDispatcher.FORWARD_QUERY_STRING); // Returns "a=2". request.getParameterValues("a"); // Appears to be a combination of the // two query strings. That request.getQueryString() is the combination of the one in my resin:Forward rule and in the actual request is different from the behavior of a raw RequestDispatcher.forward call. In that case, request.getQueryString() would be simply "a=1". I have worked around this in my application by extending the com.caucho.rewrite.Forward class, and overriding the rewriteTarget method like so: @Override protected String rewriteTarget(Matcher matcher, String uri, String queryString) { return super.rewriteTarget(matcher, uri, null); } However, I'm guessing that's not the proper solution. |
||||
Relationships | |||||
Attached Files: |
Notes | |||||
|
|||||
|
|