no need, fixed in trunk (1.5.2) -igor
2011/10/19 Yves-Marie LAINÉ <ymla...@gmail.com>: > Ok. I'll try to check what happens in 1.5.1 in this case, and then create a > ticket. > > Thanks ! > > 2011/10/19 Martin Grigorov <mgrigo...@apache.org> > >> Hi, >> >> 2011/10/19 Yves-Marie LAINÉ <ymla...@gmail.com>: >> > Hi All, >> > >> > Yesterday, i wrote a Page that need to ajax replace a component, so with >> > outputMarkupId at true. This component has to know the markupId when >> > onInitialize is called (depending of a component used by it that create a >> > javascript) >> > >> > I know that when we replace Components, the markupId of the replaced >> > Component is set on the added one. >> > >> > But in order to make the added component work on that page, i had to >> wrote >> > code like this : >> > >> > >> > public void onClick(AjaxRequestTarget target) >> { >> > >> > UserDialogPanel userDialogPanel = new >> > UserDialogPanel("dialog", rowModel); >> > >> > * >> > userDialogPanel.setMarkupId(getPage().get("dialog").getMarkupId());* >> // >> > This line of code could probably be avoided. >> > >> > >> > getPage().get("dialog").replaceWith(userDialogPanel); >> > target.addComponent(userDialogPanel); >> > >> > userDialogPanel.open(target); >> > } >> > >> > And after looking at the wicket code it seems to be normal : >> > >> > *public final MarkupContainer replace(final Component child)* >> > { >> > checkHierarchyChange(child); >> > >> > if (child == null) >> > { >> > throw new IllegalArgumentException("argument child must be not >> > null"); >> > } >> > >> > if (log.isDebugEnabled()) >> > { >> > log.debug("Replacing " + child.getId() + " in " + this); >> > } >> > >> > if (child.getParent() != this) >> > { >> > // Add to map >> > final Component replaced = put(child); >> > >> > // Look up to make sure it was already in the map >> > if (replaced == null) >> > { >> > throw new WicketRuntimeException( >> > exceptionMessage("Cannot replace a component which has >> > not been added: id='" + >> > child.getId() + "', component=" + child)); >> > } >> > >> > // first remove the component. >> > removedComponent(replaced); >> > >> > * // then add the other one. >> > addedComponent(child); // onInitialize is called in this >> method* >> > >> > // The position of the associated markup remains the same >> > child.markupIndex = replaced.markupIndex; >> > >> > * // The generated markup id remains the same >> > child.setMarkupIdImpl(replaced.getMarkupIdImpl()); // and >> then, >> > the markupid is replaced.* >> > } >> > >> > return this; >> > } >> > >> > >> > So if wicket developpers read this, do you think it's possible to improve >> > this by modifying the sequence and setting the markupId before adding the >> > component ? >> Wicket developer here :-) >> Please create a ticket in our Jira to not forget about this request. >> But I'm not sure this improvement will go in 1.4.x. 1.4.x is in >> maintenance and receives only bug fixes. New features and improvements >> go in 1.5.x. >> > (Sorry for my english, i hope to be clear enough..) >> > >> > Regards, >> > Yves-Marie LAINÉ >> > >> >> >> >> -- >> Martin Grigorov >> jWeekend >> Training, Consulting, Development >> http://jWeekend.com >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >> For additional commands, e-mail: users-h...@wicket.apache.org >> >> > > > -- > Yves-Marie LAINÉ > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org