..today
cost me a lot of nerves. I had a simple form and after every page submit,
session state value of items were sequentially shifted (after page submit, value
of first item become value of second item, value of second item become value of
third item and so on...).
Initial form state
Form state after first submit
Form state after third submit
The first
time after many years working with APEX I’ve got really pissed off. I’ve tried
to isolate the problem, so I’ve deleted most of page items and had a form with
only two items, with no processes, branches, dynamic actions...and it happened
again – after submit, item values sequentially shifted. Then I’ve tried to
create new page and all worked fine.
No matter
what, I wanted to discover what’s the problem on the old page. After some time
I got to POST request and found a clue. The items were submitted, but the
sequence wasn’t right. I’ve got items posted in order from p_t02 to p_t03 and
the p_t01 was missing. So I’ve opened FireBug and found it just before </BODY>
HTML tag in jQuery UI Dialog. And the answer was here!
POST request
On page 0
there was a region (with “missing” item – p_t01) used for jQuery Dialog. After initialization
of jQuery dialog, dialogs HTML was generated just before </BODY> HTML tag
and the dialog region was pulled from its original position (inside <form
id=” wwvFlowForm “> HTML tag) and moved just before the end of HTML body. As
you may guess, only items inside <FORM> element are submitted to session
state.
Quick
solution of this problem was to put regions used for jQuery dialogs as last
regions on page, so its items will get the last p_tXX values for name HTML attribute.
You can find test example here.
I hope that
this post will help someone someday! :)
Edit on July 29, 2015:
More about this problem and order of submited items you can find here.