This particular change is relatively simple.  I modified the code to take
into account both possible scenarios:

1) wicket:interface passed in via query string
2) wicket:interface passed in via path parameters (as is done for several of
the mount strategies)

Prior to my fix, #1 was not taken into account which caused the bug I'm
seeing.

Essentially what happens now is that if the wicket:interface is not found
already, it then looks in parameters passed in #2 style.

-Doug


Johan Compagner wrote:
> 
> i just need to look at it a bit more
> because that wicket:interface parameter cant go into the bookmarkable page
> constructor
> that is just a big no no.. As long as that doesnt happen i dont mind to
> much.
> 
> johan
> 
> 
> On Mon, May 19, 2008 at 3:56 PM, Doug Donohoe <[EMAIL PROTECTED]> wrote:
> 
>>
>> The patch fixed the problem I was seeing.
>>
>> I'm not sure how to create a good test case for this.  The WicketTester
>> doesn't seem to replicate the behavior of a browser quite properly.  The
>> existing test cases could use some improvement because they obviously
>> missed
>> this.
>>
>> It took me about 4 hours to step through the code and learn what was
>> going
>> on.  I'm confident it resolves the issue I was seeing and that it retains
>> the old behavior for the case when the wicket interface is passed through
>> the path params.
>>
>>
>> Johan Compagner wrote:
>> >
>> > I will look at that patch but it is weird, it shouldnt be needed that
>> > that is in the page param, because the special
>> > BookmarkabkleInterfaceRequestTarget already does have all the needed
>> > info
>> >
>> > On 5/18/08, Doug Donohoe <[EMAIL PROTECTED]> wrote:
>> >>
>> >> The BookmarkablePageRequestTargetUrlCodingStrategy needs it so this
>> code
>> >> is
>> >> run:
>> >>
>> >>                      return new
>> BookmarkableListenerInterfaceRequestTarget(pageMapName,
>> >>
>>  (Class)bookmarkablePageClassRef.get(), parameters, requestParameters
>> >>
>>  .getComponentPath(), requestParameters.getInterfaceName(),
>> >>
>>  requestParameters.getVersionNumber());
>> >>
>> >> Otherwise my form's onSubmit method is not called because the
>> interface
>> >> isn't recognized.
>> >>
>> >> I've already fixed the code and I'll submit a patch.
>> >>
>> >> -Doug
>> >>
>> >>
>> >> Johan Compagner wrote:
>> >>>
>> >>> i dont get what is the problem at your place
>> >>> At that time the wicket interface should be removed
>> >>> else the page parameters has wicket params in it that shouldnt be
>> those
>> >>> dont
>> >>> belong to user params.
>> >>>
>> >>> but why is this a problem?
>> >>>
>> >>> Why do you need that param later on?
>> >>>
>> >>> johan
>> >>>
>> >>>
>> >>> On Sun, May 18, 2008 at 5:26 PM, Doug Donohoe <[EMAIL PROTECTED]>
>> wrote:
>> >>>
>> >>>>
>> >>>> I'm tracking down a bug where a stateless form submission isn't
>> working
>> >>>> if
>> >>>> I
>> >>>> reboot my tomcat server.  The issue is that Wicket doesn't recognize
>> >>>> the
>> >>>> wicket:interface parameter that is passed down.
>> >>>>
>> >>>> I believe I've tracked down the problem to this code in
>> >>>> BookmarkablePageRequestTargetUrlCodingStrategy:
>> >>>>
>> >>>>                // do some extra work for checking whether this is a
>> >>>> normal
>> >>>> request to a
>> >>>>                // bookmarkable page, or a request to a stateless
>> page
>> >>>> (in
>> >>>> which case a
>> >>>>                // wicket:interface parameter should be available
>> >>>>                final String interfaceParameter = (String)parameters
>> >>>>
>> >>>>  .remove(WebRequestCodingStrategy.INTERFACE_PARAMETER_NAME);
>> >>>>
>> >>>>                if (interfaceParameter != null)
>> >>>>                {
>> >>>>
>> >>>>  WebRequestCodingStrategy.addInterfaceParameters(interfaceParameter,
>> >>>> requestParameters);
>> >>>>                        return new
>> >>>> BookmarkableListenerInterfaceRequestTarget(pageMapName,
>> >>>>
>> >>>>  (Class)bookmarkablePageClassRef.get(), parameters,
>> requestParameters
>> >>>>
>> >>>> .getComponentPath(),
>> >>>> requestParameters.getInterfaceName(),
>> >>>>
>> >>>>  requestParameters.getVersionNumber());
>> >>>>                }
>> >>>>
>> >>>>
>> >>>> The issue is that the 'parameters' will never contain the
>> >>>> INTERFACE_PARAMETER_NAME because it would have been removed in
>> >>>> WebRequestCodingStrategy:decode:215 which as far as I can tell is
>> >>>> always
>> >>>> called first (from RequestCycle.step.RESOLVE_TARGET:1233).
>> >>>>
>> >>>> The 'requestParameters' should already have the interface
>> parameters,
>> >>>> so
>> >>>> it
>> >>>> isn't clear why the addInterfaceParameters() logic is being called
>> >>>> again
>> >>>> (it
>> >>>> is already called in WebRequestCodingStrategy:decode:200).
>> >>>>
>> >>>> In what case was this logic necessary?  Being new to the code base,
>> I
>> >>>> don't
>> >>>> know every possible code path, so perhaps there is a different way
>> of
>> >>>> getting to this point that I'm not seeing.
>> >>>>
>> >>>> -Doug
>> >>>>
>> >>>>
>> >>>>
>> >>>>
>> >>>>
>> >>>> --
>> >>>> View this message in context:
>> >>>>
>> http://www.nabble.com/Bookmarkable---Stateless-form-submit-bug-%28eelco---need-your-advice%29-tp17304155p17304155.html
>> >>>> Sent from the Wicket - Dev mailing list archive at Nabble.com.
>> >>>>
>> >>>>
>> >>>
>> >>>
>> >>
>> >> --
>> >> View this message in context:
>> >>
>> http://www.nabble.com/Bookmarkable---Stateless-form-submit-bug-%28eelco---need-your-advice%29-tp17304155p17306650.html
>> >> Sent from the Wicket - Dev mailing list archive at Nabble.com.
>> >>
>> >>
>> >
>> >
>>
>> --
>> View this message in context:
>> http://www.nabble.com/Bookmarkable---Stateless-form-submit-bug-%28eelco---need-your-advice%29-tp17304155p17316713.html
>> Sent from the Wicket - Dev mailing list archive at Nabble.com.
>>
>>
> 
> 

-- 
View this message in context: 
http://www.nabble.com/Bookmarkable---Stateless-form-submit-bug-%28eelco---need-your-advice%29-tp17304155p17322227.html
Sent from the Wicket - Dev mailing list archive at Nabble.com.

Reply via email to