wicked :) Thanks alot, saved my day!

On Jun 12, 2009, at 17:33 , Jeremy Thomerson wrote:

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



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

Reply via email to