[
https://issues.apache.org/jira/browse/SLING-1178?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12776334#action_12776334
]
Carsten Ziegeler commented on SLING-1178:
-----------------------------------------
I agree with Felix, if there needs to be an ordering because of the stuff that
is done with the params, this should be done server side, so first process
deletes, then create and then modify.
> Preserve request parameter order throughout the entire request stack
> --------------------------------------------------------------------
>
> Key: SLING-1178
> URL: https://issues.apache.org/jira/browse/SLING-1178
> Project: Sling
> Issue Type: Improvement
> Components: Engine, Servlets
> Affects Versions: Servlets Post 2.0.4, Engine 2.0.6
> Reporter: Tobias Bocanegra
> Priority: Minor
> Attachments: ordered_params-r834673.patch
>
>
> When posting a form to the sling post servlet i encountered that the order of
> the request parameters is not preserved,
> even the browser sends the params according to the submitted form.
> for example the following form:
> <form name="input" action="/content/testform" method="POST">
> <input type="hidden" name="./sen...@delete"/><br/>
> Address 0: <input type="text" name="./sendTo/0/address" /><br/>
> Text 0: <input type="text" name="./sendTo/0/text" /><br/>
> Address 1: <input type="text" name="./sendTo/1/address" /><br/>
> Text 1: <input type="text" name="./sendTo/1/text" /><br/>
> Address 2: <input type="text" name="./sendTo/2/address" /><br/>
> Text 2: <input type="text" name="./sendTo/2/text" /><br/>
> <input type="submit" value="Submit" />
> </form>
> results in:
> deleted("/content/testform/sendTo");
> created("/content/testform/sendTo");
> created("/content/testform/sendTo/2");
> modified("/content/testform/sendTo/2/address");
> modified("/content/testform/sendTo/2/text");
> created("/content/testform/sendTo/1");
> modified("/content/testform/sendTo/1/text");
> created("/content/testform/sendTo/0");
> modified("/content/testform/sendTo/0/text");
> modified("/content/testform/sendTo/0/address");
> modified("/content/testform/sendTo/1/address");
> i first thought it's just the ModifyOperation which uses a HashMap instead of
> a LinkedHashMap:
> Map<String, RequestProperty> reqProperties = new HashMap<String,
> RequestProperty>();
> but the params arrive out of order already from the request.getParameterMap().
> i guess the "ParameterMap" needs to extend from LinkedHashMap, too:
> class ParameterMap extends LinkedHashMap<String, RequestParameter[]> ...
> after fixing those 2 classes, the order is correct:
> deleted("/content/testform/sendTo");
> created("/content/testform/sendTo");
> created("/content/testform/sendTo/0");
> modified("/content/testform/sendTo/0/address");
> modified("/content/testform/sendTo/0/text");
> created("/content/testform/sendTo/1");
> modified("/content/testform/sendTo/1/address");
> modified("/content/testform/sendTo/1/text");
> created("/content/testform/sendTo/2");
> modified("/content/testform/sendTo/2/address");
> modified("/content/testform/sendTo/2/text");
> i'll attach the patch
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.