By default, objects are only 'alive' for the period of that particular
page render. So, if you initialized it on the first render, the second
time it comes around it's null (assuming you are using tapestry to
manage your page properties). If you make the property persistent it
will still be around during the second page render.
Danny
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]