RE: DownloadLink problem
It doesn't... :-) Thank you anyway! :-) -Original Message- From: Riyad Kalla [mailto:rka...@gmail.com] Sent: Tuesday, March 02, 2010 6:35 PM To: users@wicket.apache.org Subject: Re: DownloadLink problem Martin, If it makes you feel any better, it would have been a week or longer before I thought to change that, good fine :) -R On Tue, Mar 2, 2010 at 9:32 AM, Martin Asenov wrote: > Oh my God!!! The problem was that the button that is supposed to do the > export was of type submit and it reloads the page, instead of refreshing > components. I changed to type=button and everything's fine... > > As people say - there is no patch for human stupidity... > > Thank you all for the help! > > Best, > Martin > > -Original Message- > From: Martin Asenov [mailto:mase...@velti.com] > Sent: Tuesday, March 02, 2010 4:34 PM > To: users@wicket.apache.org > Subject: RE: DownloadLink problem > > Thanks Ernesto! > > But I want to have the link invisible on startup (because the file's > empty). So I have this: (doesn't work, but has to) > >exportedFileLink = new DownloadLink("exported_file_link", new > LoadableDetachableModel() { > > private static final long serialVersionUID = 1L; > > @Override > protected File load() { >return exportedFile; > } >}, PhonebookExporter.OUTPUT_FILE_NAME) { > > private static final long serialVersionUID = 1L; > > @Override > public boolean isVisible() { >return exportedFile != null; > } >}; >final WebMarkupContainer exportedFileLinkHolder = new > WebMarkupContainer("link_holder"); >exportedFileLinkHolder.setOutputMarkupId(true); >exportedFileLinkHolder.add(exportedFileLink); > >rightForm.add(exportedFileLinkHolder); >rightForm.add(new AjaxButton("export_button") { > > private static final long serialVersionUID = 1L; > > @Override > protected void onSubmit(AjaxRequestTarget target, Form form) { > >PhonebookExporter exporter = getExporter(); >exportedFile = exporter.export(uploadFolder); > >if (exportedFile == null) { > error(getString("not_exported")); >} else { > info(getString("exported")); >} > >target.addComponent(exportedFileLinkHolder); >target.addComponent(feed); > } > >}); > > I really start to get pissed off by this one!!! g > > Regards, > Martin > > -Original Message- > From: Ernesto Reinaldo Barreiro [mailto:reier...@gmail.com] > Sent: Tuesday, March 02, 2010 3:50 PM > To: users@wicket.apache.org > Subject: Re: DownloadLink problem > > Weird. Just try this example: > > import java.io.File; > > import org.apache.wicket.ajax.AjaxRequestTarget; > import org.apache.wicket.ajax.markup.html.AjaxLink; > import org.apache.wicket.markup.html.link.DownloadLink; > import org.apache.wicket.markup.html.panel.Panel; > import org.apache.wicket.model.AbstractReadOnlyModel; > > /** > * @author Ernesto Reinaldo Barreiro (reier...@gmail.com) > * > */ > public class TestDownLoadLink extends Panel { > > >private static final long serialVersionUID = 1L; > >private File test = null; > >private DownloadLink download; >/** > * @param id > */ >public TestDownLoadLink(String id) { >super(id); > >this.download = new DownloadLink("download", new > AbstractReadOnlyModel(){ > > private static final long > serialVersionUID = 1L; > >@Override >public File getObject() { >return test; >} > > },"TestDownLoadLink.html") { > >private static final long serialVersionUID = 1L; > >@Override >public boolean isEnabled() { > >return test != null; >} > }; > download.setOutputMarkupId(true); > add(download); > > AjaxLink update = new AjaxLink("update") { > >private static final long serialVersionUID = 1L; > >@Override >public void onClick(AjaxRequestTarget target) { >test = new > > File(TestDownLoadLink.class.getResource("TestDownLoadLink.html").getFile()); >if(target != null) { >target.addComponent(TestDownLoadLink.this.download); >} >} > }; > > add(update); >
Re: DownloadLink problem
Martin, If it makes you feel any better, it would have been a week or longer before I thought to change that, good fine :) -R On Tue, Mar 2, 2010 at 9:32 AM, Martin Asenov wrote: > Oh my God!!! The problem was that the button that is supposed to do the > export was of type submit and it reloads the page, instead of refreshing > components. I changed to type=button and everything's fine... > > As people say - there is no patch for human stupidity... > > Thank you all for the help! > > Best, > Martin > > -Original Message- > From: Martin Asenov [mailto:mase...@velti.com] > Sent: Tuesday, March 02, 2010 4:34 PM > To: users@wicket.apache.org > Subject: RE: DownloadLink problem > > Thanks Ernesto! > > But I want to have the link invisible on startup (because the file's > empty). So I have this: (doesn't work, but has to) > >exportedFileLink = new DownloadLink("exported_file_link", new > LoadableDetachableModel() { > > private static final long serialVersionUID = 1L; > > @Override > protected File load() { >return exportedFile; > } >}, PhonebookExporter.OUTPUT_FILE_NAME) { > > private static final long serialVersionUID = 1L; > > @Override > public boolean isVisible() { >return exportedFile != null; > } >}; >final WebMarkupContainer exportedFileLinkHolder = new > WebMarkupContainer("link_holder"); >exportedFileLinkHolder.setOutputMarkupId(true); >exportedFileLinkHolder.add(exportedFileLink); > >rightForm.add(exportedFileLinkHolder); >rightForm.add(new AjaxButton("export_button") { > > private static final long serialVersionUID = 1L; > > @Override > protected void onSubmit(AjaxRequestTarget target, Form form) { > >PhonebookExporter exporter = getExporter(); >exportedFile = exporter.export(uploadFolder); > >if (exportedFile == null) { > error(getString("not_exported")); >} else { > info(getString("exported")); >} > >target.addComponent(exportedFileLinkHolder); >target.addComponent(feed); > } > >}); > > I really start to get pissed off by this one!!! g > > Regards, > Martin > > -Original Message- > From: Ernesto Reinaldo Barreiro [mailto:reier...@gmail.com] > Sent: Tuesday, March 02, 2010 3:50 PM > To: users@wicket.apache.org > Subject: Re: DownloadLink problem > > Weird. Just try this example: > > import java.io.File; > > import org.apache.wicket.ajax.AjaxRequestTarget; > import org.apache.wicket.ajax.markup.html.AjaxLink; > import org.apache.wicket.markup.html.link.DownloadLink; > import org.apache.wicket.markup.html.panel.Panel; > import org.apache.wicket.model.AbstractReadOnlyModel; > > /** > * @author Ernesto Reinaldo Barreiro (reier...@gmail.com) > * > */ > public class TestDownLoadLink extends Panel { > > >private static final long serialVersionUID = 1L; > >private File test = null; > >private DownloadLink download; >/** > * @param id > */ >public TestDownLoadLink(String id) { >super(id); > >this.download = new DownloadLink("download", new > AbstractReadOnlyModel(){ > > private static final long > serialVersionUID = 1L; > >@Override >public File getObject() { >return test; >} > > },"TestDownLoadLink.html") { > >private static final long serialVersionUID = 1L; > >@Override >public boolean isEnabled() { > >return test != null; >} > }; > download.setOutputMarkupId(true); > add(download); > > AjaxLink update = new AjaxLink("update") { > >private static final long serialVersionUID = 1L; > >@Override >public void onClick(AjaxRequestTarget target) { >test = new > > File(TestDownLoadLink.class.getResource("TestDownLoadLink.html").getFile()); >if(target != null) { >target.addComponent(TestDownLoadLink.this.download); >} >} > }; > > add(update); >} > } > > and the HTML > > > > > > > download > Click me to update download > > > > > Just place them somewhere and do > > new TestDownLoadL
RE: DownloadLink problem
Oh my God!!! The problem was that the button that is supposed to do the export was of type submit and it reloads the page, instead of refreshing components. I changed to type=button and everything's fine... As people say - there is no patch for human stupidity... Thank you all for the help! Best, Martin -Original Message- From: Martin Asenov [mailto:mase...@velti.com] Sent: Tuesday, March 02, 2010 4:34 PM To: users@wicket.apache.org Subject: RE: DownloadLink problem Thanks Ernesto! But I want to have the link invisible on startup (because the file's empty). So I have this: (doesn't work, but has to) exportedFileLink = new DownloadLink("exported_file_link", new LoadableDetachableModel() { private static final long serialVersionUID = 1L; @Override protected File load() { return exportedFile; } }, PhonebookExporter.OUTPUT_FILE_NAME) { private static final long serialVersionUID = 1L; @Override public boolean isVisible() { return exportedFile != null; } }; final WebMarkupContainer exportedFileLinkHolder = new WebMarkupContainer("link_holder"); exportedFileLinkHolder.setOutputMarkupId(true); exportedFileLinkHolder.add(exportedFileLink); rightForm.add(exportedFileLinkHolder); rightForm.add(new AjaxButton("export_button") { private static final long serialVersionUID = 1L; @Override protected void onSubmit(AjaxRequestTarget target, Form form) { PhonebookExporter exporter = getExporter(); exportedFile = exporter.export(uploadFolder); if (exportedFile == null) { error(getString("not_exported")); } else { info(getString("exported")); } target.addComponent(exportedFileLinkHolder); target.addComponent(feed); } }); I really start to get pissed off by this one!!! g Regards, Martin -Original Message- From: Ernesto Reinaldo Barreiro [mailto:reier...@gmail.com] Sent: Tuesday, March 02, 2010 3:50 PM To: users@wicket.apache.org Subject: Re: DownloadLink problem Weird. Just try this example: import java.io.File; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.markup.html.AjaxLink; import org.apache.wicket.markup.html.link.DownloadLink; import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.model.AbstractReadOnlyModel; /** * @author Ernesto Reinaldo Barreiro (reier...@gmail.com) * */ public class TestDownLoadLink extends Panel { private static final long serialVersionUID = 1L; private File test = null; private DownloadLink download; /** * @param id */ public TestDownLoadLink(String id) { super(id); this.download = new DownloadLink("download", new AbstractReadOnlyModel(){ private static final long serialVersionUID = 1L; @Override public File getObject() { return test; } },"TestDownLoadLink.html") { private static final long serialVersionUID = 1L; @Override public boolean isEnabled() { return test != null; } }; download.setOutputMarkupId(true); add(download); AjaxLink update = new AjaxLink("update") { private static final long serialVersionUID = 1L; @Override public void onClick(AjaxRequestTarget target) { test = new File(TestDownLoadLink.class.getResource("TestDownLoadLink.html").getFile()); if(target != null) { target.addComponent(TestDownLoadLink.this.download); } } }; add(update); } } and the HTML download Click me to update download Just place them somewhere and do new TestDownLoadLink("xxx"); It works for me. First time the download link is disable and when you click on the AJAX link file is assigned, link is refreshed and you can download your file;-) Best, Ernesto On Tue, Mar 2, 2010 at 2:24 PM, Martin Asenov wrote: > Unfortunately doesn't work this way... The model is never refreshed... > > -Original Message- > From: Ernesto Reinaldo Barreiro [mailto:reier...@gmail.com] > Sent: Tuesday, March 02, 2010 2:31 PM > To: users@wicket.apache.org > Subject: Re: DownloadLink problem > > Not sure... but could you try something like: > > DownloadLink downloadLink = new DownloadLink("link_id", new > AbstractReadOnlyModel(){ >public File getObject() { >return this.linkModel; >}; >},"myfile.xxx"); >
RE: DownloadLink problem
Thanks Ernesto! But I want to have the link invisible on startup (because the file's empty). So I have this: (doesn't work, but has to) exportedFileLink = new DownloadLink("exported_file_link", new LoadableDetachableModel() { private static final long serialVersionUID = 1L; @Override protected File load() { return exportedFile; } }, PhonebookExporter.OUTPUT_FILE_NAME) { private static final long serialVersionUID = 1L; @Override public boolean isVisible() { return exportedFile != null; } }; final WebMarkupContainer exportedFileLinkHolder = new WebMarkupContainer("link_holder"); exportedFileLinkHolder.setOutputMarkupId(true); exportedFileLinkHolder.add(exportedFileLink); rightForm.add(exportedFileLinkHolder); rightForm.add(new AjaxButton("export_button") { private static final long serialVersionUID = 1L; @Override protected void onSubmit(AjaxRequestTarget target, Form form) { PhonebookExporter exporter = getExporter(); exportedFile = exporter.export(uploadFolder); if (exportedFile == null) { error(getString("not_exported")); } else { info(getString("exported")); } target.addComponent(exportedFileLinkHolder); target.addComponent(feed); } }); I really start to get pissed off by this one!!! g Regards, Martin -Original Message- From: Ernesto Reinaldo Barreiro [mailto:reier...@gmail.com] Sent: Tuesday, March 02, 2010 3:50 PM To: users@wicket.apache.org Subject: Re: DownloadLink problem Weird. Just try this example: import java.io.File; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.markup.html.AjaxLink; import org.apache.wicket.markup.html.link.DownloadLink; import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.model.AbstractReadOnlyModel; /** * @author Ernesto Reinaldo Barreiro (reier...@gmail.com) * */ public class TestDownLoadLink extends Panel { private static final long serialVersionUID = 1L; private File test = null; private DownloadLink download; /** * @param id */ public TestDownLoadLink(String id) { super(id); this.download = new DownloadLink("download", new AbstractReadOnlyModel(){ private static final long serialVersionUID = 1L; @Override public File getObject() { return test; } },"TestDownLoadLink.html") { private static final long serialVersionUID = 1L; @Override public boolean isEnabled() { return test != null; } }; download.setOutputMarkupId(true); add(download); AjaxLink update = new AjaxLink("update") { private static final long serialVersionUID = 1L; @Override public void onClick(AjaxRequestTarget target) { test = new File(TestDownLoadLink.class.getResource("TestDownLoadLink.html").getFile()); if(target != null) { target.addComponent(TestDownLoadLink.this.download); } } }; add(update); } } and the HTML download Click me to update download Just place them somewhere and do new TestDownLoadLink("xxx"); It works for me. First time the download link is disable and when you click on the AJAX link file is assigned, link is refreshed and you can download your file;-) Best, Ernesto On Tue, Mar 2, 2010 at 2:24 PM, Martin Asenov wrote: > Unfortunately doesn't work this way... The model is never refreshed... > > -Original Message- > From: Ernesto Reinaldo Barreiro [mailto:reier...@gmail.com] > Sent: Tuesday, March 02, 2010 2:31 PM > To: users@wicket.apache.org > Subject: Re: DownloadLink problem > > Not sure... but could you try something like: > > DownloadLink downloadLink = new DownloadLink("link_id", new > AbstractReadOnlyModel(){ >public File getObject() { >return this.linkModel; >}; >},"myfile.xxx"); >downloadLink.setOutputMarkupId(true); > > and make linkModel a member variable? This way file will be "refreshed". > > Best, > > Ernnesto > > On Tue, Mar 2, 2010 at 1:14 PM, Martin Asenov wrote: > > > Hi, guys! > > > > I experience some DownloadLink problem - I have these fields: > > > > File linkModel; > > DownloadLink theLink = new DownloadLink("link_id", new > > Model(linkModel)); > &g
Re: DownloadLink problem
Weird. Just try this example: import java.io.File; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.markup.html.AjaxLink; import org.apache.wicket.markup.html.link.DownloadLink; import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.model.AbstractReadOnlyModel; /** * @author Ernesto Reinaldo Barreiro (reier...@gmail.com) * */ public class TestDownLoadLink extends Panel { private static final long serialVersionUID = 1L; private File test = null; private DownloadLink download; /** * @param id */ public TestDownLoadLink(String id) { super(id); this.download = new DownloadLink("download", new AbstractReadOnlyModel(){ private static final long serialVersionUID = 1L; @Override public File getObject() { return test; } },"TestDownLoadLink.html") { private static final long serialVersionUID = 1L; @Override public boolean isEnabled() { return test != null; } }; download.setOutputMarkupId(true); add(download); AjaxLink update = new AjaxLink("update") { private static final long serialVersionUID = 1L; @Override public void onClick(AjaxRequestTarget target) { test = new File(TestDownLoadLink.class.getResource("TestDownLoadLink.html").getFile()); if(target != null) { target.addComponent(TestDownLoadLink.this.download); } } }; add(update); } } and the HTML download Click me to update download Just place them somewhere and do new TestDownLoadLink("xxx"); It works for me. First time the download link is disable and when you click on the AJAX link file is assigned, link is refreshed and you can download your file;-) Best, Ernesto On Tue, Mar 2, 2010 at 2:24 PM, Martin Asenov wrote: > Unfortunately doesn't work this way... The model is never refreshed... > > -Original Message- > From: Ernesto Reinaldo Barreiro [mailto:reier...@gmail.com] > Sent: Tuesday, March 02, 2010 2:31 PM > To: users@wicket.apache.org > Subject: Re: DownloadLink problem > > Not sure... but could you try something like: > > DownloadLink downloadLink = new DownloadLink("link_id", new > AbstractReadOnlyModel(){ >public File getObject() { >return this.linkModel; >}; >},"myfile.xxx"); >downloadLink.setOutputMarkupId(true); > > and make linkModel a member variable? This way file will be "refreshed". > > Best, > > Ernnesto > > On Tue, Mar 2, 2010 at 1:14 PM, Martin Asenov wrote: > > > Hi, guys! > > > > I experience some DownloadLink problem - I have these fields: > > > > File linkModel; > > DownloadLink theLink = new DownloadLink("link_id", new > > Model(linkModel)); > > theLink.setOutputMarkupId(true); > > > > After another button click I have the linkModel field pointing to real > file > > on the file system. And then I say: > > > > target.addComponent(theLink); > > > > the link name is still invisible, and when I click on the small clickable > > area, Wicket comes up with: > > > > WicketMessage: Method onLinkClicked of interface > > org.apache.wicket.markup.html.link.ILinkListener targeted at component > > [MarkupContainer [Component id = exported_file_link]] threw an exception > > > > Root cause: > > > > java.lang.IllegalStateException: > > org.apache.wicket.markup.html.link.DownloadLink failed to retrieve a File > > object from model > > at > > > org.apache.wicket.markup.html.link.DownloadLink.onClick(DownloadLink.java:141) > > at > org.apache.wicket.markup.html.link.Link.onLinkClicked(Link.java:224) > > at java.lang.reflect.Method.invoke(Method.java:597) > > I thought I've made everything perfect, but it seems that I haven't. > > Any help is appreciated! > > > > Best regards, > > Martin > > > > > > - > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > For additional commands, e-mail: users-h...@wicket.apache.org > >
Re: DownloadLink problem
Use a LoadableDetachableModel? On Tue, Mar 2, 2010 at 8:24 AM, Martin Asenov wrote: > Unfortunately doesn't work this way... The model is never refreshed... > > -Original Message- > From: Ernesto Reinaldo Barreiro [mailto:reier...@gmail.com] > Sent: Tuesday, March 02, 2010 2:31 PM > To: users@wicket.apache.org > Subject: Re: DownloadLink problem > > Not sure... but could you try something like: > > DownloadLink downloadLink = new DownloadLink("link_id", new > AbstractReadOnlyModel(){ > public File getObject() { > return this.linkModel; > }; > },"myfile.xxx"); > downloadLink.setOutputMarkupId(true); > > and make linkModel a member variable? This way file will be "refreshed". > > Best, > > Ernnesto > > On Tue, Mar 2, 2010 at 1:14 PM, Martin Asenov wrote: > >> Hi, guys! >> >> I experience some DownloadLink problem - I have these fields: >> >> File linkModel; >> DownloadLink theLink = new DownloadLink("link_id", new >> Model(linkModel)); >> theLink.setOutputMarkupId(true); >> >> After another button click I have the linkModel field pointing to real file >> on the file system. And then I say: >> >> target.addComponent(theLink); >> >> the link name is still invisible, and when I click on the small clickable >> area, Wicket comes up with: >> >> WicketMessage: Method onLinkClicked of interface >> org.apache.wicket.markup.html.link.ILinkListener targeted at component >> [MarkupContainer [Component id = exported_file_link]] threw an exception >> >> Root cause: >> >> java.lang.IllegalStateException: >> org.apache.wicket.markup.html.link.DownloadLink failed to retrieve a File >> object from model >> at >> org.apache.wicket.markup.html.link.DownloadLink.onClick(DownloadLink.java:141) >> at org.apache.wicket.markup.html.link.Link.onLinkClicked(Link.java:224) >> at java.lang.reflect.Method.invoke(Method.java:597) >> I thought I've made everything perfect, but it seems that I haven't. >> Any help is appreciated! >> >> Best regards, >> Martin >> >> > > - > 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
RE: DownloadLink problem
Unfortunately doesn't work this way... The model is never refreshed... -Original Message- From: Ernesto Reinaldo Barreiro [mailto:reier...@gmail.com] Sent: Tuesday, March 02, 2010 2:31 PM To: users@wicket.apache.org Subject: Re: DownloadLink problem Not sure... but could you try something like: DownloadLink downloadLink = new DownloadLink("link_id", new AbstractReadOnlyModel(){ public File getObject() { return this.linkModel; }; },"myfile.xxx"); downloadLink.setOutputMarkupId(true); and make linkModel a member variable? This way file will be "refreshed". Best, Ernnesto On Tue, Mar 2, 2010 at 1:14 PM, Martin Asenov wrote: > Hi, guys! > > I experience some DownloadLink problem - I have these fields: > > File linkModel; > DownloadLink theLink = new DownloadLink("link_id", new > Model(linkModel)); > theLink.setOutputMarkupId(true); > > After another button click I have the linkModel field pointing to real file > on the file system. And then I say: > > target.addComponent(theLink); > > the link name is still invisible, and when I click on the small clickable > area, Wicket comes up with: > > WicketMessage: Method onLinkClicked of interface > org.apache.wicket.markup.html.link.ILinkListener targeted at component > [MarkupContainer [Component id = exported_file_link]] threw an exception > > Root cause: > > java.lang.IllegalStateException: > org.apache.wicket.markup.html.link.DownloadLink failed to retrieve a File > object from model > at > org.apache.wicket.markup.html.link.DownloadLink.onClick(DownloadLink.java:141) > at org.apache.wicket.markup.html.link.Link.onLinkClicked(Link.java:224) > at java.lang.reflect.Method.invoke(Method.java:597) > I thought I've made everything perfect, but it seems that I haven't. > Any help is appreciated! > > Best regards, > Martin > > - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
Re: DownloadLink problem
Not sure... but could you try something like: DownloadLink downloadLink = new DownloadLink("link_id", new AbstractReadOnlyModel(){ public File getObject() { return this.linkModel; }; },"myfile.xxx"); downloadLink.setOutputMarkupId(true); and make linkModel a member variable? This way file will be "refreshed". Best, Ernnesto On Tue, Mar 2, 2010 at 1:14 PM, Martin Asenov wrote: > Hi, guys! > > I experience some DownloadLink problem - I have these fields: > > File linkModel; > DownloadLink theLink = new DownloadLink("link_id", new > Model(linkModel)); > theLink.setOutputMarkupId(true); > > After another button click I have the linkModel field pointing to real file > on the file system. And then I say: > > target.addComponent(theLink); > > the link name is still invisible, and when I click on the small clickable > area, Wicket comes up with: > > WicketMessage: Method onLinkClicked of interface > org.apache.wicket.markup.html.link.ILinkListener targeted at component > [MarkupContainer [Component id = exported_file_link]] threw an exception > > Root cause: > > java.lang.IllegalStateException: > org.apache.wicket.markup.html.link.DownloadLink failed to retrieve a File > object from model > at > org.apache.wicket.markup.html.link.DownloadLink.onClick(DownloadLink.java:141) > at org.apache.wicket.markup.html.link.Link.onLinkClicked(Link.java:224) > at java.lang.reflect.Method.invoke(Method.java:597) > I thought I've made everything perfect, but it seems that I haven't. > Any help is appreciated! > > Best regards, > Martin > >