Re: Auto-inspect result sets of 1
Re: Auto-inspect result sets of 1
- Subject: Re: Auto-inspect result sets of 1
- From: Ramsey Gurley <email@hidden>
- Date: Mon, 11 Oct 2010 17:15:56 -0400
On Oct 11, 2010, at 5:13 PM, David Avendasora wrote:
On Oct 11, 2010, at 4:58 PM, David Avendasora wrote:
On Oct 11, 2010, at 4:48 PM, Ramsey Gurley wrote:
On Oct 11, 2010, at 4:28 PM, David Avendasora wrote:
Hey Ramsey,
I'm using the branch delegate in other places where the user is
given a choice of what the next page should be, but I thought
that since I'm figuring it out on-the-fly during the request that
nextPageDelegate was the way to go. I've revised my NPD and
here's what it looks like now:
public WOComponent nextPage(WOComponent sender) {
WOComponent nextPage;
if (((ERD2WQueryPage) sender).queryDataSource()
.fetchObjects()
.count() == 1) {
InspectPageInterface ipi =
D2W.factory().inspectPageForEntityNamed(Student.ENTITY_NAME,
sender.session());
((ERD2WInspectPage) ipi).setObject((Student)
((ERD2WQueryPage)
sender).queryDataSource().fetchObjects().lastObject());
You may want to consider getting your object first, then using
object.entityName() in your factory method to make this more
generally reusable.
See, now that's just genius. This can be a delegate that works for
any EO, not just Student. Brilliant!
One rule:
100 : pageConfiguration like 'Query*' => nextPageDelegate =
com.my.application.delegates.QueryToListOrInspectNextPageDelegate
[er.directtoweb.ERDDelayedObjectCreationAssignment]
Applies this logic to all searches, for any Entity.
D2W is awesome!
Dave
Totally! (^_^)
nextPage = (WOComponent) ipi;
} else {
nextPage = ((ERD2WQueryPage) sender).nextPage();
Does that last line work? I would have thought the logic in your
original would be required.
Yep! Works great. :-) When I wrote it I was worried that it would
end up in an endless loop with sender.nextPage() simply calling
this delegate, but it works perfectly. Maybe I'm just lucky.
I think you're just lucky (^_^) Have a look at the source for
ERD2WQueryPage around line 268. You haven't set nextPage, so you're
returning null. Since you return null, the page continues on with its
default logic. If you set nextPage in the future, you won't get your
list. You'll get nextpage. You should probably return null
explicitly or do what you were doing before.
Ramsey
Dave
Ramsey
}
return nextPage;
}
Dave
On Oct 11, 2010, at 9:55 AM, Ramsey Gurley wrote:
Looks good to me Dave. I think any "better" way than something
that works will be a matter of opinion (^_^) Personally I like
branch delegates, but in this case, the next page delegate is
only called by the queryAction. So you know the call to next
page comes from the find button.
Ramsey
On Oct 11, 2010, at 6:57 AM, David Avendasora wrote:
Okay, after a nights sleep, I got it working, but how I did it
seems hackish (shocking, I know). Is the nextPage() method
below from my delegate the best way to do this?
public WOComponent nextPage(WOComponent sender) {
WOComponent nextPage;
if (((ERD2WQueryPage) sender).queryDataSource()
.fetchObjects()
.count() == 1) {
InspectPageInterface ipi = D2W.factory()
.inspectPageForEntityNamed
(Student.ENTITY_NAME,
sender.session());
((ERD2WInspectPage) ipi).setObject((EOEnterpriseObject)
((ERD2WQueryPage) sender).queryDataSource()
.fetchObjects
()
.lastObject
());
nextPage = (WOComponent) ipi;
} else {
ListPageInterface lpi = D2W.factory()
.listPageForEntityNamed
(Student.ENTITY_NAME,
sender.session());
((ERD2WListPage) lpi).setDataSource(((ERD2WQueryPage)
sender).queryDataSource());
nextPage = (WOComponent) lpi;
}
return nextPage;
}
On Oct 10, 2010, at 8:39 PM, David Avendasora wrote:
Hi All,
When a user performs a query, if the results contain exactly
one object I want to return an Inspect page for that object
instead of a List page.
I assume I'm going to want to implement a NextPageDelegate,
but I'm not sure how to do that. I've looked around but I
can't seem to find a good example. Does anyone have an example
NextPageDelegate that I can use as a starting point?
I promise to create a Wiki page documenting how to do this for
future mes.
Thanks!
Dave _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (Webobjects-
email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden
_______________________________________________
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
_______________________________________________
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
_______________________________________________
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