You're right about the number of methods in IDirect, sorry I forgot to
clarify that. I guess all of the places I am doing this, the class
implementing IDirect is an abstract Tapestry page or component. This
way Tapestry fills in all the details on those other methods and all I
need to implement is trigger().

I'm not sure how else to do it, unfortunately. If you're generating
the link in a page or component it's not too difficult, and I suppose
even if you aren't, you can always retrieve a page/component that
implements IDirect from the request cycle for that first parameter.

On Tue, Mar 18, 2008 at 11:16 AM, Petri Wessman <[EMAIL PROTECTED]> wrote:
> Ben Dotte wrote:
>  > Hi Petri,
>  >
>  > To generate a DirectLink href programmatically, you'll need a class
>  > that implements IDirect. In the trigger() method on that, you can call
>  > the intended listener. Refer to an instance of the class implementing
>  > IDirect for the first parameter of DirectServiceParameter, set the
>  > Direct engine service on it (@InjectObject("engine-service:direct") or
>  > with a setter for a regular service), and create the href portion like
>  > this:
>  >
>  > public String getDirectHref()
>  > {
>  >   Object[] params = new Object[] { param1, param2, etc };
>  >   DirectServiceParameter dsParam = new DirectServiceParameter(this, 
> params);
>  >   ILink link = directService.getLink(false, dsParam);
>  >   return link.getURL();
>  > }
>  >
>  > HTH
>  > Ben
>
>  Thanks, that looks exactly what I'm looking for! I noticed DirectService
>  in the API docs, but could not figure out quite how it should be used.
>
>  One additional question, though: what's the smartest way to get a class
>  that implements IDirect? That interface by itself requires that you
>  implement a metric ton of methods, so I'm thinking there must be a
>  smarter way.
>
>  I tried
>
>  public class TestDirectLink extends AbstractComponent implements IDirect
>
>  and them implemented the few methods required by AbstractComponent and
>  the IDynamicInvoker & IDirect interfaces, but I'm unsure of how to
>  instantiate the class that so it can be used for creating the link.
>
>  If I just create it as a POJO, I get a Tapestry exception when I try to
>  use it:
>
>  Exception: [EMAIL PROTECTED] container is null.
>
>  So I probably need to attach it to the current page (or something)? Or
>  is AbstractComponent the wrong way to proceed, here?
>
>  //Petri
>
>
>
>
>  > On Tue, Mar 18, 2008 at 8:45 AM, Petri Wessman <[EMAIL PROTECTED]> wrote:
>  >> Hello all, I have a new question. I'd need to generate a
>  >>  DirectLink-style link from inside Java code (render method); in other
>  >>  words, generate HTML that would duplicate the effect of this:
>  >>
>  >>  <a jwcid="@DirectLink" listener="listener:someAction"
>  >>  parameters="ognl:someId">link text</a>
>  >>
>  >>  from a Java code method which has access to a IMarkupWriter object (and
>  >>  the IPage, if needed).
>  >>
>  >>  Any tips on how to do this? I tried browsing the DirectLink.java source,
>  >>   but the N levels of abstraction there mostly just gave me a headache :}.
>  >>
>  >>  The reason I need to do this is: I need to generate a listing of
>  >>  "events" for a system. Some of those events will contain various system
>  >>  object IDs, and I need to make those IDs into links that will point to
>  >>  detail on the specific ID. There may be more than one link per line, or
>  >>  none.
>  >>
>  >>  So I'd have stuff like:
>  >>
>  >>   * something happened
>  >>   * something else happened to item XXX
>  >>   * used requested item XXX to me merged with other type of item YYY
>  >>
>  >>  and I'd like to make those XXX and YYY parts into links that would lead
>  >>  to a detail page on the given system object. The actual text is
>  >>  localized (comes from page.getMessages()).
>  >>
>  >>  The only way I've figured to do this is to use a @Delegator object and
>  >>  roll up my own renderer for the item line HTML.. but now I'm stumped at
>  >>  the "how do I generate a Tapestry link from within code" step.
>  >>
>  >>  All help and pointers much appreciated :}
>  >>
>  >>  //Petri
>  >>
>  >>  ---------------------------------------------------------------------
>  >>  To unsubscribe, e-mail: [EMAIL PROTECTED]
>  >>  For additional commands, e-mail: [EMAIL PROTECTED]
>  >>
>  >>
>  >
>  > ---------------------------------------------------------------------
>  > To unsubscribe, e-mail: [EMAIL PROTECTED]
>  > For additional commands, e-mail: [EMAIL PROTECTED]
>  >
>
>
>  ---------------------------------------------------------------------
>  To unsubscribe, e-mail: [EMAIL PROTECTED]
>  For additional commands, e-mail: [EMAIL PROTECTED]
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to