Ha! Is there anything Wonder can't do? I knew there had to be something
there already !!!
Extra Very Elegant.
On Mon, Mar 31, 2008 at 5:58 AM, Mike Schrag <[EMAIL PROTECTED]> wrote:
> In Wonder, ERXDataHyperlink --
> <wo:ERXDataHyperlink pageName = "EditPersonPage" person = "$person">edit
> person<wo:ERXDataHyperlink>
>
> You can pass in multiple variables, as well ...
>
> ms
>
> On Mar 31, 2008, at 12:51 AM, Chris Meyer wrote:
>
> > Code comment: Ooo ick - using public ivars in your api! - wrap that
> > person with accessors!
>
> If I'm lazy enough to want to avoid writing minimal action functions then
> surely I'm lazy enough to skip accessors of nominal value.
>
> > <cough>DirectToWeb</cough>
>
> Might work for some stuff (the classes in my example, for instance)... but
> not for the general case. My question was more for the general case.
>
> OK, answering my question, here's a component that does it. Seems like
> this (with a rename, validation, and probably other industrializing cleanup)
> might be nice for WOnder.
>
> IteratedLink.java:
>
> package com.lqgraphics.webreg.components;
>
> import com.webobjects.appserver.*;
>
> public class IteratedLink extends com.webobjects.appserver.WOComponent
> {
> public IteratedLink(WOContext context) {
> super(context);
> }
>
> public boolean isStateless() { return true; }
>
>
> public WOComponent action() {
> Object value = this.valueForBinding("value");
> String key = (String)valueForBinding("field");
> WOComponent component = this.pageWithName((String)valueForBinding(
> "pageName"));
> component.takeValueForKey(value, key);
> return component;
> }
> }
>
> IteratedLink.html:
>
> <wo:link action="$action"><wo:WOComponentContent/></wo:link>
>
> IteratedLink.api (lazy version, no validation):
>
> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
> <wodefinitions>
> <wo wocomponentcontent="false" class="IteratedLink.java">
>
> <binding name="pageName"/>
> <binding name="field"/>
> <binding name="value"/>
>
> </wo>
> </wodefinitions>
>
>
> On Sun, Mar 30, 2008 at 8:11 PM, David LeBer <[EMAIL PROTECTED]>
> wrote:
>
> >
> > On 30-Mar-08, at 10:44 PM, Chris Meyer wrote:
> >
> > > One pattern I find myself using often is that I have a page listing
> > > my objects (PeopleList) and a detail page (PersonDetail).
> > >
> > > In my PeopleList component, I have a WORepetition of WOHyperlink's
> > > linking to specific PersonDetails.
> > >
> > > To facilitate the hyperlink, I have an action in PeopleList.java
> > > that creates a new PeopleDetail page and sets the iterated Person in
> > > the WORepetition into a variable on that new page.
> > >
> > > My questions:
> > >
> > > Is this the right design pattern to use?
> > >
> > > If so, is there any way to use ognl or some other mechanism to avoid
> > > writing the action method in PeopleList.java that loads the new page
> > > and sets the Person variable on the new page?
> > >
> > > If not, is there any fundamental reason why this cannot be done
> > > automatically (with some syntax modifications/improvements in the
> > > WOParser, or whatever)?
> >
> > <cough>DirectToWeb</cough>
> >
> > Failing that, create some superclasses for you components to inherit
> > from that contain the generic behaviour you want:
> >
> > ListPage.java
> >
> > public EOEnterpriseObject listItem;
> > public String detailsPageName; // set in your subclass;
> >
> > ...
> >
> > public WOComponent goToDetailsPage() {
> > WOComponent nextPage = pageWithName(detailsPageName);
> > nextPage.takeValueForKey(listItem, "detailItem");
> > return nextPage;
> > }
> >
> >
> > DetailsPage.java
> >
> > private EOEnterpriseObject _detailItem;
> > private WOComponent _backPage;
> >
> > public DetailsPage(WOContext context) {
> > super(context);
> > setBackPage(this.context().page());
> > }
> >
> > public EOEnterpriseObject detailItemt() {
> > return _detailsItem;
> > }
> >
> > public void setDetailItem(EOEnterpriseObject obj) {
> > _detailItem = obj;
> > }
> >
> > public WOComponent backPage() {
> > return _backPage;
> > }
> >
> > public void setBackPage(WOComponent page) {
> > _backPage = page;
> > }
> >
> > public WOComponent saveChanges() {
> > WOComponent nextPage = backPage();
> > try {
> > detailItem.editingContext().saveChanges();
> > } catch (Exception e) {
> > // EXAMPLE ONLY :-)
> > nextPage = null;
> > }
> > return nextPage;
> > }
> >
> >
> > > PeopleList.wo:
> > >
> > > <ul>
> > > <wo:WORepetition list="people" item="person">
> > > <li><wo:WOHyperlink action="gotoPersonDetail"><wo:string
> > > value="$person.name"/></wo:WOHyperlink></li>
> > > </wo:WORepetition>
> > > </ul>
> > >
> > > PeopleList.java
> > >
> > > class PeopleList
> > > {
> > > public Person person;
> > >
> > > // can this be avoided?
> > > public WOComponent gotoPersonDetail()
> > > {
> > > PersonDetail pd =
> > > (PersonDetail)pageWithName(PersonDetail.class.getSimpleName());
> > > pd.person = person;
> > > return pd;
> > > }
> > > }
> > >
> > > PersonDetail.java
> > >
> > > class PersonDetail
> > > {
> > > public Person person;
> > > }
> >
> > Code comment: Ooo ick - using public ivars in your api! - wrap that
> > person with accessors!
> >
> > ;david
> >
> > --
> > David LeBer
> > Codeferous Software
> > 'co-def-er-ous' adj. Literally 'code-bearing'
> > site: http://codeferous.com
> > blog: http://davidleber.net
> > profile: http://www.linkedin.com/in/davidleber
> > --
> > Toronto Area Cocoa / WebObjects developers group:
> > http://tacow.org
> >
> >
> >
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list ([email protected])
> Help/Unsubscribe/Update your Subscription:
>
> http://lists.apple.com/mailman/options/webobjects-dev/mschrag%40mdimension.com
>
> This email sent to [EMAIL PROTECTED]
>
>
>
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list ([email protected])
> Help/Unsubscribe/Update your Subscription:
>
> http://lists.apple.com/mailman/options/webobjects-dev/cmeyer1969%40gmail.com
>
> This email sent to [EMAIL PROTECTED]
>
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list ([email protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com
This email sent to [EMAIL PROTECTED]