Re: creating new object D2W
Re: creating new object D2W
- Subject: Re: creating new object D2W
- From: Ramsey Gurley <email@hidden>
- Date: Thu, 29 Mar 2012 17:24:20 -0700
You can very easily do it just the way you said originally Ted. That's actually the recommended way for Controller code. Model code, like setting a create date, should live in the model. Model View Controller. MVC. Keep a clean separation between these three and you will be able to reuse your existing work in new apps more easily.
David's recommendation is good too, but I would consider it more advanced usage. You have to be careful not to tie your model too tightly to your app if you start using thread storage. Too much thread storage can lead to mixed up MVC. You can find yourself with frameworks that only work with one app if you overuse it and start putting Controller code in your model.
The trick is knowing when it's controller code, and when it's model code. That comes with experience*.
Ramsey
*Experience - Something you get just after you needed it. ;-)
On Mar 29, 2012, at 4:37 PM, David Holt wrote:
> See my note to Paul for an example of this.
>
> Use ERXThreadStorage
>
> David
>
> On 2012-03-29, at 4:29 PM, Theodore Petrosky wrote:
>
>> yes but I have other values like depending on who is logged in. the object is 'owned' by that user. I am storing the user in the session so i was thinking of:
>>
>> ((D2WComponent) component).object().takeValueForKey(session.currentUser, "person");
>>
>> init sounds good for the creationDate but what about this 'user'.
>>
>> Ted
>>
>> --- On Thu, 3/29/12, Ramsey Gurley <email@hidden> wrote:
>>
>>> From: Ramsey Gurley <email@hidden>
>>> Subject: Re: creating new object D2W
>>> To: "Theodore Petrosky" <email@hidden>
>>> Cc: email@hidden
>>> Date: Thursday, March 29, 2012, 5:16 PM
>>>
>>> On Mar 29, 2012, at 1:48 PM, Theodore Petrosky wrote:
>>>
>>>> I am creating an new object page with this.
>>>>
>>>> public EditPageInterface createBriefAction() {
>>>>
>>>> EditPageInterface component =
>>> D2W.factory().editPageForNewObjectWithConfigurationNamed("CreateBrief",
>>> session());
>>>>
>>> component.setNextPage(session().context().page());
>>>>
>>>> if(component instanceof
>>> D2WPage) {
>>>> D2WPage page =
>>> (D2WPage)component;
>>>>
>>> page.d2wContext().takeValueForKey("Brief.CreateBrief",
>>> "navigationState");
>>>> }
>>>> return component;
>>>> }
>>>>
>>>> I want to pass in a date to the object. is this the
>>> 'correct' or mostest correct way:
>>>>
>>>> ((D2WComponent) component).object().takeValueForKey(
>>> (new NSTimestamp()), "creationDate");
>>>>
>>>> Ted
>>>
>>>
>>> Sounds like model logic. Do it in the model. If you just
>>> want to set a create date, then use your EO's init()
>>> method.
>>>
>>> public class Brief extends _Brief {
>>>
>>> public void init(EOEditingContext ec) {
>>> super.init(ec);
>>> setCreationDate(new
>>> NSTimestamp());
>>> }
>>>
>>> }
>>>
>>> And if code is just too cumbersome, you can do it in the
>>> userInfo dictionary of Brief inside your model :-)
>>>
>>>
>>>
>>> You can read more about it here
>>>
>>> http://webobjects.mdimension.com/hudson/job/Wonder/javadoc/er/extensions/eof/ERXEntityClassDescription.html
>>>
>>> Just do it in init() unless you want to use vanilla
>>> EOGenericRecords for some reason.
>>>
>>> Ramsey
>>>
>>>
>>
>> _______________________________________________
>> 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