Ideas:

1. Instead of using AjaxSubmitLink, you can attach an
AjaxFormSubmitBehavior subclass that overrides getCallbackUrl() to call
getCallbackUrl(false) instead of getCallbackUrl(true).

2. Override WebApplication#newRequestCycleProcessor to return a custom
processor that overrides WebRequestCycleProcessor#resolve that calls
requestParameters.setOnlyProcessIfPathActive(false) before super.resolve().

On Wed, Nov 30, 2011 at 12:36 AM, Jan Loose <jan.lo...@cleverlance.com>wrote:

> **
> Hi Dan,
>
> thx for you answer. I have a problem, because we are not able to migrate
> to 1.5, because our project is very large and in phase of testing, so now
> it is impossible to migrate and no matter how much I want it. We don't want
> to use disk as a storage, so what can we do?
>
> I've tried that if the submit is broken the link still works and when I
> click to it, then it fixes submit and it works then for both tabs. My only
> wish is to work it always:-)
>
> What can I do, what can I fix in AccessStackPageMap? I can extend it or
> copy it and change it, but it is a little complicated, so I would
> appreciate help.
>
> Jan
>
>
> On Wed, 30 Nov 2011 06:29:32 +0100, Dan Retzlaff <dretzl...@gmail.com>
> wrote:
>
> Jan,
>
> The submits for the first page are being ignored because the behavior on
> the AjaxSubmitLink that submits the form is configured to only target the
> active page. You can see this in AbstractAjaxBehavior#getCallbackUrl()
> during page construction. However, the ignore logic is only implemented for
> AccessStackPageMap (used by HttpSessionStore) and not
> SecondLevelCachePageMap (used by the default SecondLevelCacheSessionStore).
> With the default session store, execution literally falls through a "//
> TODO also this should work.." in WebRequestCycleProcessor and the request
> is handled.
>
> Don't hold your breath for a solution in 1.4. As you've probably inferred
> from the clamor to answer your question, the community has largely moved on
> to 1.5. By the way, all of this "target active page only" business has
> apparently been removed there.
>
> I hope that at least helps remove some confusion. :)
>
> Dan
>
> On Mon, Nov 28, 2011 at 3:15 AM, Jan Loose <jan.lo...@cleverlance.com>wrote:
>
>> Hi,
>>
>> I investigated a little bit and I found that it happened only for
>> HttpSessionStore:
>>
>> This is my test application:
>>
>> public class TestApplication extends WebApplication {
>>
>>    @Override
>>    public Class<? extends Page> getHomePage() {
>>        return TestPage.class;
>>    }
>>
>>    @Override
>>    protected void init() {
>>        super.init();
>>        mount(new HybridUrlCodingStrategy("/test", TestPage.class));
>>    }
>>
>>    @Override
>>    protected ISessionStore newSessionStore() {
>>        return new HttpSessionStore(this);
>>    }
>> }
>>
>> The whole application is here: http://web.loose.cz/wicket/test.zip(maven + 
>> war)
>>
>> It is broken for Apache Tomcat 7 (Development) and for IBM WebSphere
>> (Production) too, so it is not problem of one application server.
>>
>> The steps needed to reproduction:
>> 1. open browser
>> 2. go to http://localhost:8080/test-1.0/test
>> 3. open new tab
>> 4. go to http://localhost:8080/test-1.0/test
>> 5. click to submit
>> 6. swicth to first tab
>> 7. click to submit -> nothing happened
>> 8. click to link -> it works
>> 9. click to submit -> now it works too
>> 10. go to second tab -> submit/link work fine
>>
>> Br,
>> Jan
>>
>>
>>
>> On Thu, 24 Nov 2011 16:50:37 +0100, Dan Retzlaff <dretzl...@gmail.com>
>> wrote:
>>
>>  Hi, Jan. Your code looks okay to me. I tested in Chrome myself using
>>> 1.4.18
>>> and 1.4.19 and was not able to reproduce your problem.
>>>
>>> On Thu, Nov 24, 2011 at 1:08 AM, Jan Loose <jan.lo...@cleverlance.com
>>> >wrote:
>>>
>>>  Hello,
>>>>
>>>> we are using Wicket 1.4.18 and we found a problem if we open two pages
>>>> then the AjaxLink works great but the AjaxSubmitLink doesn't. The page
>>>> is
>>>> mounted by HybridUrlCodingStrategy, but I've tried the normal
>>>> bookmarkable
>>>> mount and the behavior is the same. I've created a simple page, that
>>>> demonstrates the problem.
>>>>
>>>> public class TestPage extends WebPage {
>>>>
>>>>   private String input;
>>>>
>>>>   public TestPage() {
>>>>       Form<Void> form;
>>>>       add(form = new Form<Void>("form"));
>>>>
>>>>       final TextField<String> inputField = new
>>>> TextField<String>("input",
>>>> new PropertyModel<String>(this, "input"));
>>>>       form.add(inputField.**setOutputMarkupId(true));
>>>>
>>>>
>>>>       form.add(new AjaxSubmitLink("submit") {
>>>>
>>>>           @Override
>>>>           protected void onSubmit(AjaxRequestTarget target, Form<?>
>>>> form)
>>>> {
>>>>               input = "submit " + Math.random();
>>>>               target.addComponent(**inputField);
>>>>
>>>>           }
>>>>       });
>>>>       form.add(new AjaxLink<Void>("link") {
>>>>
>>>>           @Override
>>>>           public void onClick(AjaxRequestTarget target) {
>>>>               input = "link " + Math.random();
>>>>               target.addComponent(**inputField);
>>>>
>>>>           }
>>>>       });
>>>>   }
>>>>
>>>>   public String getInput() {
>>>>       return input;
>>>>   }
>>>>
>>>>   public void setInput(String input) {
>>>>       this.input = input;
>>>>   }
>>>> }
>>>>
>>>> <?xml version="1.0" encoding="utf-8"?>
>>>> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "
>>>> http://www.w3.org/TR/xhtml1/**DTD/xhtml1-strict.dtd<
>>>> http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd>
>>>> ">
>>>> <html xmlns="http://www.w3.org/1999/**xhtml <
>>>> http://www.w3.org/1999/xhtml>"
>>>> xmlns:wicket="http://wicket.**apache.org/dtds.data/wicket-**
>>>> xhtml1.4-strict.dtd<
>>>> http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd>
>>>>
>>>> ">
>>>> <head>
>>>>   <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
>>>>   <title>TestPage</title>
>>>> </head>
>>>> <body>
>>>>   <form wicket:id="form">
>>>>       <div>
>>>>           <input wicket:id="input"/>
>>>>           <a wicket:id="submit">submit</a>
>>>>           <a wicket:id="link">link</a>
>>>>       </div>
>>>>   </form>
>>>> </body>
>>>> </html>
>>>>
>>>> Just open the page in two tabs in one browser (I've tested it in Opera
>>>> and
>>>> Chrome). In the first tab click to the submit link (AjaxSubmitLink) and
>>>> then switch to the second page and click to the submit link too. Nothing
>>>> happened. I investigated there is used EmptyAjaxRequestTarget, but I'm
>>>> not
>>>> sure why, because if try the same scenario using the second link
>>>> (AjaxLink)
>>>> then it works fine.
>>>>
>>>> Where is the problem? What am I doing wrong? How can I solve this
>>>> problem?
>>>>
>>>> Best regards,
>>>> Jan
>>>>
>>>>
>>
>> --
>> Jan Loose
>> J2EE Team Leader / Senior J2EE Developer
>> _____________________________________________
>> Cleverlance - CREATE IT
>> člen Cleverlance Group
>> www.cleverlance.com
>>
>> Dukelských hrdinů 34
>> 170 00 Praha 7
>> Czech Republic
>>
>> Tel: +420 266 177 166
>> Mobil: +420 777 788 078
>>
>
>
>
>
> --
> *Jan Loose*
> *J2EE Team Leader / Senior J2EE Developer*
> _____________________________________________
> *Cleverlance - CREATE IT*
> člen Cleverlance Group
> www.cleverlance.com
>
> Dukelských hrdinů 34
> 170 00 Praha 7
> Czech Republic
>
> Tel: +420 266 177 166
> Mobil: +420 777 788 078
>

Reply via email to