Yes - don't use a simple attribute modifier. Use an "AttributeModifier" that takes a model. Return the URL in the model.
pseudo code: container.add(new AttributeModifier("value", true, new AbstractReadOnlyModel<CharSequence>()) { public CharSequence getObject() { return getRequestCycle().urlFor(dlink, ILinkListener.INTERFACE)); } }); You're trying to get the URL before the page is constructed / added to page map - as the error mentions. This delays the URL retrieval until render time. -- Jeremy Thomerson http://www.wickettraining.com On Fri, Jun 12, 2009 at 4:35 AM, Bas Vroling<bvrol...@cmbi.ru.nl> wrote: > Thanks, I looked at the source and did the following: > > public JalViewPanel(String id, DefaultMutableTreeNode treeNode) { > super(id); > activeNode = treeNode; > > dlink = new DownloadLink("downloadMsf", > currentJalviewAlignment) { > �...@override > public void onClick() { > String alignment = (String) > currentJalviewAlignment.getObject(); > byte[] bytes = alignment.getBytes(); > > getRequestCycle().setRequestTarget( > new > AlignmentRequestTarget(bytes, "alignment.fasta")); > } > }; > > add(dlink); > > WebMarkupContainer container = new > WebMarkupContainer("filename"); > SimpleAttributeModifier modifier = new > SimpleAttributeModifier("value", > getRequestCycle().urlFor(dlink, > ILinkListener.INTERFACE)); > container.add(modifier); > add(container); > } > > the " getRequestCycle().urlFor(dlink, ILinkListener.INTERFACE) " part works, > when I put this is a label it renders the correct url which if i paste it in > the address bar goes to download the file. > However, in the way it is now wicket throws an IllegalStateException: > > java.lang.IllegalStateException: No Page found for component > [MarkupContainer [Component id = downloadMsf]] > > Any ideas? > > > > On 11 Jun, at 23:23, Jeremy Thomerson wrote: > >> Look at the source - it has getURL which is a protected method. If >> you really can't figure out how to use urlFor(...) from the source - >> then override getURL as such: >> >> public CharSequence getURL() { >> return super.getURL(); >> } >> >> Make it public and use it to get the URL. You can ascertain all of >> this from the source. >> >> >> -- >> Jeremy Thomerson >> http://www.wickettraining.com >> >> >> >> >> On Thu, Jun 11, 2009 at 4:18 AM, Bas Vroling<bvrol...@cmbi.ru.nl> wrote: >>> >>> So does anyone have an idea how to fix this? >>> >>> >>> On 10 Jun, at 12:42, Bas Vroling wrote: >>> >>>> Thanks for the extensive feedback, but urlFor() does not accept that as >>>> input... >>>> I tried being smart and did this (please correct me if this is >>>> nonsense): >>>> >>>> add(new WebMarkupContainer("filename").add(new SimpleAttributeModifier( >>>> "value", >>>> dlink.urlFor(ILinkListener.INTERFACE)))); >>>> >>>> when I access the pages it gives the following error: >>>> >>>> java.lang.IllegalStateException: No Page found for component >>>> [MarkupContainer [Component id = downloadMsf]] >>>> at org.apache.wicket.Component.getPage(Component.java:1755) >>>> >>>> although the component is added to the panel. Here's the complete code: >>>> >>>> public JalViewPanel(String id, DefaultMutableTreeNode treeNode) { >>>> super(id); >>>> activeNode = treeNode; >>>> >>>> DownloadLink dlink = new DownloadLink("downloadMsf", >>>> currentJalviewAlignment) { >>>> @Override >>>> public void onClick() { >>>> String alignment = (String) >>>> currentJalviewAlignment.getObject(); >>>> byte[] bytes = alignment.getBytes(); >>>> getRequestCycle().setRequestTarget(new >>>> AlignmentRequestTarget(bytes, "alignment.fasta")); >>>> } >>>> }; >>>> >>>> add(dlink); >>>> add(new WebMarkupContainer("filename").add(new >>>> SimpleAttributeModifier( >>>> "value", >>>> dlink.urlFor(ILinkListener.INTERFACE)))); >>>> } >>>> >>>> On 10 Jun, at 12:10, Martijn Dashorst wrote: >>>> >>>>> You could always look at the source for how Link does it: getURL() >>>>> calls: >>>>> >>>>> /** >>>>> * Gets the url to use for this link. >>>>> * >>>>> * @return The URL that this link links to >>>>> */ >>>>> protected CharSequence getURL() >>>>> { >>>>> return urlFor(ILinkListener.INTERFACE); >>>>> } >>>>> >>>>> which calls: >>>>> >>>>> Component#urlFor(this, ILinkListener.INTERFACE) >>>>> >>>>> so you should call: >>>>> >>>>> urlFor(dlink, ILinkListener.INTERFACE) >>>>> >>>>> Martijn >>>>> >>>>> On Wed, Jun 10, 2009 at 11:59 AM, Bas Vroling<bvrol...@cmbi.ru.nl> >>>>> wrote: >>>>>> >>>>>> I'm feeling not really smart here, but that doesn't work. urlFor needs >>>>>> something like a irequesttarget. I tried something like this: >>>>>> >>>>>> add(new WebMarkupContainer("filename").add(new >>>>>> SimpleAttributeModifier( >>>>>> "value", >>>>>> urlFor(dlink.getRequestCycle().getRequestTarget())))); >>>>>> >>>>>> but that gives me the url of the page, not the downloadlink. >>>>>> >>>>>> On 10 Jun, at 11:46, Martijn Dashorst wrote: >>>>>> >>>>>>> urlFor(dlink)? >>>>>>> >>>>>>> Martijn >>>>>>> >>>>>>> On Wed, Jun 10, 2009 at 11:27 AM, Bas Vroling<bvrol...@cmbi.ru.nl> >>>>>>> wrote: >>>>>>>> >>>>>>>> Ok, that is starting to work, thanks! Now I only need to get the url >>>>>>>> in >>>>>>>> the >>>>>>>> simpleAttributeModifier. This doesn't accept models but needs a >>>>>>>> CharSequence, which does seem logical but how do I get the actual >>>>>>>> URL >>>>>>>> of >>>>>>>> the >>>>>>>> dlink model in there? >>>>>>>> >>>>>>>> On 10 Jun, at 10:48, Martijn Dashorst wrote: >>>>>>>> >>>>>>>>> <param wicket:id="filename" /> >>>>>>>>> >>>>>>>>> add(new WebMarkupContainer("filename").add(new >>>>>>>>> SimpleAttributeModifier("value", ...))); >>>>>>>>> >>>>>>>>> On Wed, Jun 10, 2009 at 9:57 AM, Bas Vroling<bvrol...@cmbi.ru.nl> >>>>>>>>> wrote: >>>>>>>>>> >>>>>>>>>> If I set setRenderBodyOnly(true) it doesn't work either, and then >>>>>>>>>> it >>>>>>>>>> shouldn't complain anymore. (wicket is the one complaining, not >>>>>>>>>> the >>>>>>>>>> applet >>>>>>>>>> btw) >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On 10 Jun, at 09:53, Dorothée Giernoth wrote: >>>>>>>>>> >>>>>>>>>>> b/c you can't put a tag into a tag ... as it says: it is a value >>>>>>>>>>> and >>>>>>>>>>> it >>>>>>>>>>> needs a value, not a tag ... xml doesn't work that way >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> -----Ursprüngliche Nachricht----- >>>>>>>>>>> Von: Bas Vroling [mailto:bvrol...@cmbi.ru.nl] >>>>>>>>>>> Gesendet: Mittwoch, 10. Juni 2009 09:41 >>>>>>>>>>> An: users@wicket.apache.org >>>>>>>>>>> Betreff: inserting urls in script variables >>>>>>>>>>> >>>>>>>>>>> Hi guys, >>>>>>>>>>> >>>>>>>>>>> I'm trying to insert a download url in a piece of template code. >>>>>>>>>>> The >>>>>>>>>>> template part looks like this: >>>>>>>>>>> >>>>>>>>>>> <wicket:panel> >>>>>>>>>>> <span wicket:id="familyName"></span> >>>>>>>>>>> <applet code="jalview.bin.JalviewLite" width="100%" >>>>>>>>>>> height="750" >>>>>>>>>>> archive="jalviewApplet.jar"> >>>>>>>>>>> <param name="file" value="{{URL HERE}}"> >>>>>>>>>>> <param name="embedded" value="true"/> >>>>>>>>>>> <param name="showFullId" value="false"/> >>>>>>>>>>> </applet> >>>>>>>>>>> </wicket:panel> >>>>>>>>>>> >>>>>>>>>>> The applet show a multiple sequence alignment that I would like >>>>>>>>>>> to >>>>>>>>>>> be >>>>>>>>>>> retrieved from wicket. >>>>>>>>>>> In my java code I have created a link that downloads the file. >>>>>>>>>>> This >>>>>>>>>>> works fine if I show the link on a page and click on it: >>>>>>>>>>> >>>>>>>>>>> DownloadLink dlink = new DownloadLink("downloadMsf", >>>>>>>>>>> currentJalviewAlignment) { >>>>>>>>>>> @Override >>>>>>>>>>> public void onClick() { >>>>>>>>>>> String alignment = (String) >>>>>>>>>>> currentJalviewAlignment.getObject(); >>>>>>>>>>> byte[] bytes = alignment.getBytes(); >>>>>>>>>>> getRequestCycle().setRequestTarget(new >>>>>>>>>>> AlignmentRequestTarget(bytes, "alignment" + ".fasta")); >>>>>>>>>>> } >>>>>>>>>>> }; >>>>>>>>>>> >>>>>>>>>>> When I try to do the obvious, replace the {{URL_HERE}} part with >>>>>>>>>>> <span >>>>>>>>>>> wicket:id="downloadMsf"></span> it complains about non-valid XML >>>>>>>>>>> and >>>>>>>>>>> such. >>>>>>>>>>> >>>>>>>>>>> Any ideas? >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> --------------------------------------------------------------------- >>>>>>>>>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>>>>>>>>>> For additional commands, e-mail: users-h...@wicket.apache.org >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> --------------------------------------------------------------------- >>>>>>>>>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>>>>>>>>>> For additional commands, e-mail: users-h...@wicket.apache.org >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> --------------------------------------------------------------------- >>>>>>>>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>>>>>>>>> For additional commands, e-mail: users-h...@wicket.apache.org >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> Become a Wicket expert, learn from the best: >>>>>>>>> http://wicketinaction.com >>>>>>>>> Apache Wicket 1.3.5 is released >>>>>>>>> Get it now: http://www.apache.org/dyn/closer.cgi/wicket/1.3. >>>>>>>>> >>>>>>>>> >>>>>>>>> --------------------------------------------------------------------- >>>>>>>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>>>>>>>> For additional commands, e-mail: users-h...@wicket.apache.org >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> --------------------------------------------------------------------- >>>>>>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>>>>>>> For additional commands, e-mail: users-h...@wicket.apache.org >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Become a Wicket expert, learn from the best: >>>>>>> http://wicketinaction.com >>>>>>> Apache Wicket 1.3.5 is released >>>>>>> Get it now: http://www.apache.org/dyn/closer.cgi/wicket/1.3. >>>>>>> >>>>>>> --------------------------------------------------------------------- >>>>>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>>>>>> For additional commands, e-mail: users-h...@wicket.apache.org >>>>>>> >>>>>> >>>>>> >>>>>> --------------------------------------------------------------------- >>>>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>>>>> For additional commands, e-mail: users-h...@wicket.apache.org >>>>>> >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Become a Wicket expert, learn from the best: http://wicketinaction.com >>>>> Apache Wicket 1.3.5 is released >>>>> Get it now: http://www.apache.org/dyn/closer.cgi/wicket/1.3. >>>>> >>>>> --------------------------------------------------------------------- >>>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>>>> For additional commands, e-mail: users-h...@wicket.apache.org >>>>> >>>> >>>> >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>>> For additional commands, e-mail: users-h...@wicket.apache.org >>>> >>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>> For additional commands, e-mail: users-h...@wicket.apache.org >>> >>> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >> For additional commands, e-mail: users-h...@wicket.apache.org >> > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > For additional commands, e-mail: users-h...@wicket.apache.org > > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org