I think (1) is on the right track, and although I don't really know
how to do this either, it looks like you should examine the source
code for ExternalService (or DirectService if you like).
If you're in 4.0, the key lines are:
private LinkFactory _linkFactory;
...
Object[] parameters = _linkFactory.extractListenerParameters
(cycle);
cycle.setListenerParameters(parameters);
...
But read through the whole class -- it looks like what you need is
there.
Cheers,
Paul
On Aug 28, 2005, at 5:51 AM, Vjeran Marcinko wrote:
Sorry for flashy subject, but last time this question went into
void, so ... ;)
And I'm pretty sure that any experienced Tapestry developer came
upon this problem.
Let's say I have custom service that does somethig, let's say for
example that it generates PDF. Meaning, this service calls some
handler interface to fetch PDF document instance for rendering
(similar as IChartProvider interface from Workbench that provides
JChart instances). Something like:
public interface PdfHandler {
public PdfDocument getPdfDocument();
}
Of course, on user (page) side, there is special PdfLink component
that contains ServiceLink for calling this custom service.
It's all nice and easy, but problem is that my page that implements
this interface (provides PdfDocument), is dependant upon some
parameter that was paseed to it for rendering, but PDF generation
is subsequent request and page doesn't have this parameter anymore.
Now, I see 2 solutions, from which none is satisfying:
1. Interface should be something like:
public interface PdfHandler {
public PdfDocument getPdfDocument(IRequestCycle cycle);
}
thus I would be able to pass arbitrary parameters similar as
DirectLink does, and fetch it from IRequestCycle afterwards.
It's a bit uglier interface and problem is that there's no good
example as how to do it with ServiceLink...
2. I should make this needed parameter as "client" persisted page
property, thus it would persist till this subsequent request when I
need to provide PdfDocument. Interface stays clean using this aproach.
Problem with this second way is that I dunno how to do it when this
parameter is let's say primary key of some entity that is looping
inside some For component on this page?!
Is there some nice solution to this?
Regards,
Vjeran
---------------------------------------------------------------------
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]