Well It looks like this isn't exactly what I want. With persistance
the form stays filled out after returning to it. So the idea is that
I have to store the object in a hidden value and then get it back?
On 7/15/05, Chris Chiappone <[EMAIL PROTECTED]> wrote:
> Well seting the properties to persistant did the trick. I guess I am
> not clear on how the page cycle works yet being new to tapestry. I
> would have expected the values not to be null, but I guess I didn't
> know that the page was rendered again after submission.
>
> On 7/15/05, Robert Zeigler <[EMAIL PROTECTED]> wrote:
> > object should /not/ be initialized on page creation.
> > Pages are pooled; state information in the page is not.
> > If the page-property is a "persistent" property, it is "attached" at
> > page render and "detached" (page property set to null) when the page
> > finishes rendering by the framework. If the property is not persistent,
> > it is still set back to null at the end of page rendering to prevent
> > goofups like user b seeing user a's account information.
> > So, you initialize things in pageBeginRender.
> > Now, you've inited in pageBeginRender, but you probably don't want to
> > re-init when the form is submitted, because you may be "re-initting"
> > something that shouldn't be initialized. One solution to this dilemma
> > is to do something like:
> > pageBeginRender(PageEvent event) {
> > if (!event.getRequestCycle.isRewinding()) {
> > //initialize objects here.
> > }
> > }
> >
> > Then, you use the "hidden" component to store necessary objects at the
> > top of your form. Then your object gets re-initialized automatically on
> > form submission in time for things after it to not be null.
> >
> > Or... you can just make the property persistent, depending on your views
> > on stateful vs. stateless webapps, session-use, etc.
> >
> > Robert
> >
> > Chris Chiappone wrote:
> > > now im totally confused. The object should have been initialized on
> > > page creation, how come it would become null when submitting the form?
> > >
> > > On 7/15/05, Danny Mandel <[EMAIL PROTECTED]> wrote:
> > >
> > >>This error means that your appInfo object is null. So, wherever you
> > >>moved your appInfo restoration/initialization logic, it's not getting
> > >>called int this case anymore.
> > >>
> > >>Danny
> > >>
> > >>Chris Chiappone wrote:
> > >>
> > >>
> > >>>Thanks for the quick responses. The two responses I got were
> > >>>basically the same so I tried it. The problem is now I get:
> > >>>
> > >>>binding: ExpressionBinding[EditApp appInfo.name]
> > >>>location: context:/WEB-INF/EditApp.page, line 41, column 58
> > >>>
> > >>>ognl.OgnlException
> > >>>source is null for getProperty(null, "name")
> > >>>
> > >>>So I am still a bit stuck on what I should do.
> > >>>
> > >>>On 7/15/05, Danny Mandel <[EMAIL PROTECTED]> wrote:
> > >>>
> > >>>
> > >>>
> > >>>>In your pageBeginRender method you can check to see if the form is
> > >>>>rewinding. If it is, you probably don't want to initialize things in
> > >>>>there i.e.:
> > >>>>
> > >>>>public void pageBeginRender(PageEvent event) {
> > >>>> if (!event.getRequestCycle().isRewinding()) {
> > >>>> // do your normal initialization stuff and create if null
> > >>>> }
> > >>>>}
> > >>>>
> > >>>>In the case where it is rewinding, then you'll want to move your object
> > >>>>retrieval/restoration to a different place. This can be done by binding
> > >>>>your object's id to a hidden field that will fetch it or by use of a
> > >>>>data squeezer. This has been addressed many times on this list so it
> > >>>>should be in the archives and I know that there is a wiki page on using
> > >>>>a data squeezer to do this sort of thing:
> > >>>>
> > >>>>http://wiki.apache.org/jakarta-tapestry/DataSqueezer
> > >>>>
> > >>>>Hope that helps,
> > >>>>Danny
> > >>>>
> > >>>>Chris Chiappone wrote:
> > >>>>
> > >>>>
> > >>>>
> > >>>>
> > >>>>>I am a bit confused about how pageBeginRender works during a form
> > >>>>>submission Here is the code i have:
> > >>>>>
> > >>>>> public void pageBeginRender(PageEvent event) {
> > >>>>> // initialize app
> > >>>>> retrieveApp(getAppVerId());
> > >>>>> }
> > >>>>>
> > >>>>> private void retrieveApp(Long id){
> > >>>>> if(id != null){
> > >>>>> System.out.println("Updating App: "+ id);
> > >>>>> AppDAO dao = new AppDAO();
> > >>>>> AppVer ver = null;
> > >>>>> AppInfo info = null;
> > >>>>> ver = dao.getAppVerId(id, false);
> > >>>>> info = ver.getAppInfo();
> > >>>>> setAppInfo(info);
> > >>>>> setAppVer(ver);
> > >>>>> }
> > >>>>> if(getAppInfo() == null){
> > >>>>> System.out.println("Creating a new application");
> > >>>>> setAppInfo(new AppInfo());
> > >>>>> setAppVer(new AppVer());
> > >>>>> getAppVer().setRegdate(new Date());
> > >>>>> }
> > >>>>> }
> > >>>>>
> > >>>>> /**
> > >>>>> * Action taken when this form has been submitted
> > >>>>> *
> > >>>>> * @param cycle
> > >>>>> */
> > >>>>> public void formSubmit(IRequestCycle cycle){
> > >>>>> System.out.println("Current VerId = "+ getAppVerId());
> > >>>>> // Check to see all validation was a success
> > >>>>> ValidationDelegate delegate =
> > >>>>>(ValidationDelegate)getBeans().getBean("delegate");
> > >>>>>
> > >>>>> if(!delegate.getHasErrors()){
> > >>>>> // Insert the new version
> > >>>>> AppDAO dao = new AppDAO();
> > >>>>> AppInfo info = getAppInfo();
> > >>>>> AppVer ver = getAppVer();
> > >>>>>
> > >>>>>....
> > >>>>>
> > >>>>>Basically I need to initialize the AppInfo and AppVer objects when the
> > >>>>>page is rendered. The page is an add/edit form. If appVerId is not
> > >>>>>null I lookup AppInfo and AppVer to populate my form for editing, if
> > >>>>>null create new objects. This seems to work fine. THe problem I am
> > >>>>>having is that when I submit the form It create a new AppVer and
> > >>>>>AppInfo because appVerId appears to be null in pageBeginRender(Event)
> > >>>>>but when it continues to formSubmit my print is showing the the
> > >>>>>appVerId != null which is what I expect. The problem is the objects
> > >>>>>have been intialized as new so it ends up creating duplicates. Hope I
> > >>>>>made this clear.
> > >>>>>
> > >>>>>
> > >>>>>
> > >>>>>
> > >>>>>
> > >>>>
> > >>>>---------------------------------------------------------------------
> > >>>>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]
> > >>
> > >>
> > >
> > >
> > >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
>
>
> --
> ~chris
>
--
~chris
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]