Re: Passing a wrapper component to a page-level component
Re: Passing a wrapper component to a page-level component
- Subject: Re: Passing a wrapper component to a page-level component
- From: Paul Hoadley <email@hidden>
- Date: Thu, 7 May 2009 12:45:13 +0930
On 06/05/2009, at 9:57 AM, Paul Hoadley wrote:
On 06/05/2009, at 9:02 AM, Ramsey Lee Gurley wrote:
If you wanted, you could set up a page configuration to use your
EditFooPage component and have D2W return it like it would any
other page component. However, if your EditFooPage.wo does not
descend from D2WComponent, then the D2W factory will not call
setLocalContext on your page, so you will not have a D2WContext.
And without a d2wContext in your page, you won't be able to get the
d2wContext in your page wrapper... You're right back where you
started.
D2W is the standard approach to do what you are asking. All D2W
pages are general, non-app, page level components wrapped by an app-
specific page wrapper. The page wrapper can then get its
additional bindings from the page's d2wContext. (Look at ERD2WHead
for a concrete example of a pageWrapper component getting binding
info from the d2wContext.)
If you can subclass D2WComponent, then I think it should work.
Never tried it though :-)
I will give it a try and report back.
Since I started this, I should report on how it turned out.
I'm not D2W-averse, and the app in question uses a few D2W components
to good effect, but I just couldn't work out how to implement what
Ramsey was describing. Evidently I am still a D2W novice, and I found
the documentation for D2W a little, uh, thin.
So I rolled my own solution. EditFooPage has a WOSwitchComponent as
its outermost element. The app-specific LAF class is passed to
EditFooPage after construction so that it knows what to substitute for
the WOSwitchComponent. Key-value pairs are stored in
context().userInfo() to simulate the bindings intended for LAF. The
keys are in a namespace specific to the app-specific LAF, which knows
to look for them and change its behaviour accordingly. Of course,
context() disappears at the end of the transaction, so if LAF finds
key-values in userInfo(), it also caches them locally for reuse if
required.
It works, but I feel dirty. Critiques welcome.
--
Paul.
w http://logicsquad.net/
h http://paul.hoadley.name/
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden