Like Pierre said, component.setMarkupId(component.getId()) will work, but it 
was discussed just a couple of weeks ago why that's a bad approach.  The thread 
isn't appearing on nabble though, not sure why that is.  Anyway, a safer 
approach (to prevent duplicate ID issues) is to generate your javascript calls 
at the server using the markup ID as a parameter.  It sounds like you have a 
function like

function func() {
 var elem = document.getElementById("someId");
 // do stuff to the element
}

so just modify to

function func(id) {
 var elem = document.getElementById(id);
 // do stuff to the element
}

and output a call to that function using something like a 
StringHeaderContributor or implement IHeaderContributor if you need to call at 
page load or use AjaxRequestTarget if in an ajax request.

----- Original Message -----
From: Pierre Goupil
[mailto:goupilpie...@gmail.com]
To: users@wicket.apache.org
Sent: Mon, 12
Apr 2010 18:36:55 -0400
Subject: Re: How to get stable DOM IDs without
hacks?


> Hello,
> 
> You can use myComponent.setMarkupId("blah"), but then it's up to you to
> ensure the id uniqueness.
> 
> Regards,
> 
> Pierre
> 
> 
> On Tue, Apr 13, 2010 at 12:35 AM, <b...@actrix.gen.nz> wrote:
> 
> > Hi,
> >
> > Wicket has its own mind - it changes IDs in HTML forms so JavaScript
> > breaks.
> >
> > Example:
> >
> > Source:
> > <input type="button" wicket:id="addButton" id="addButton"
> > value="Add"/>
> >
> > Generated:
> > <input type="button" id="addButtona" value="Add" name="addButton"/>
> >
> > Please note that Wicket renames the id from "addButton" to
> > "addButtona" while it does not change the name attribute value.
> >
> > So we would have to create a Button subclass and:
> >
> >    @Override
> >    public String getMarkupId(){
> >        // As an example, use the wicket:id value ...
> >        return getId();
> >    }
> >
> > and in HTML, we have to write a warning as a reminder of this hack:
> >    <!-- Wicket overrides id from wicket:id value -->
> >
> > This is a maintenance problem and a performance problem because the
> > additinal classes cost memory and CPU.
> >
> > Any ideas?
> >
> > Thanks,
> >
> > Bernard
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> > For additional commands, e-mail: users-h...@wicket.apache.org
> >
> >
> 
> 
> -- 
> Les deux règles universelles du bide :
> 
> 1) on n'explique pas un bide
> 
> 2) dans le futur, un bide sera toujours un bide.
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org

Reply via email to