Igor,
Thank you for responding back.
Here is the code that I am using:
final Label c2 = new Label("c2", Integer.toString(counter));
final Link<?> c2Link = new
StatelessAjaxFallbackLink<Void>("c2-link",
null, updatedParameters) {
private static final long serialVersionUID = 1L;
@Override
public void onClick(final AjaxRequestTarget target) {
if (target != null) {
target.addComponent(c2, "c2");
}
}
};
Here is my HTML:
<span wicket:id="c2" id="c2"></span>
<a href="#" wicket:id="c2-link">increment</a>
Instead of calling c2.setOutputMarkupId(true), I am passing the ID
("c2") to the component, which means that my StatelessAjaxFallbackLink
works perfectly the first time around. The HTML that is generated for
the C2 span unfortunately contains the wrong ID the second time around,
because the Component#setOutputMarkupId(true) executed as part of
AjaxRequestTarget#respondComponent(Response, String, Component)
generates the wrong id.
Without the call to Component#setOutputMarkupId(true) the id would just
remain "c2" and my StatelessAjaxFallbackLink would work perfectly.
BTW: The call to Component#setOutputMarkupId(true) is redundant anyway
as AjaxRequestTarget#addComponent(Component) already enforces that the
value must be true...
Best regards,
Joachim
On Sun, 2010-02-07 at 20:18 -0800, Igor Vaynberg wrote:
> Why remove it?
>
> -Igor
>
>
> On Sunday, February 7, 2010, Joachim F. Kainz <[email protected]> wrote:
> > Dear Developers,
> >
> > I am working for a very, very, very large global retailer and we are
> > about to roll out a very high-volume mobile application using Wicket.
> >
> > In order to support some of the requirements we have I have been working
> > on adding a few more stateless components to Wicket. As one example, I
> > added a StatelessAjaxFailbankLink. I also added a StatelessLink that
> > works better for our app. The code is APL2 licensed and available at
> > http://jolira-tools.googlecode.com/svn/wicket-stateless/trunk/ together
> > with demo application.
> >
> > The demo works perfectly, when clicking on the link the first time. The
> > second time it does not. The reason for this problem is that
> > AjaxRequestTarget#respondComponent(Response, String, Component) method
> > calls Component#setOutputMarkupId(boolean) with a value of true.
> >
> > I looked for quite a while but I have not found a way to override this
> > behavior anywhere. I would greatly appreciate it, if somebody could
> > suggest an approach or if somebody could suggest how to remove this line
> > from the AjaxRequestTarget in a future version of the wicket code.
> > Removing the line should be side-effect free as, in cases this line is
> > actually used, this setting is verified earlier in the code.
> >
> > Best regards,
> >
> > Joachim
> >
> >