Re: [T5.0.18] @InjectedPage does not have access to it's own layout

2010-01-10 Thread lebenski

Hi,

Sorry I've been away for a few days hence the lack of reply.  Inge, I tried
to explain my problem carefully and precisely as Igor indicated that he
didn't understand it.  Of course my problem doesn't make sense, if it made
sense I could solve it and it wouldn't be a problem!  Feel free to hit me
with some obvious questions...

I have tried all sorts of event handlers including onSuccess in the layout
and inside the confirmation component, it simply never gets called whatever
I choose.

My original reason for posting was to see if there was a recognised
issue/limitation in this area (injecting pages) that I was not aware of. 
Judging by the reactions i've had there is not.  I still have no solution
but when I find out what my problem was i'll make sure to check back.

Cheers,
Ben.


Inge Solvoll-2 wrote:
 
 I don't know. What I DO know is this:
 
 Trying hard to explain why your problem doesn't make sense is not a very
 good way of solving it. I do that very often, and I'm always corrected by
 someone who asks the obvious questions ;)
 
 The best way is to binary search your way through this, by modifying
 your
 code step by step in order to find out when the event handler will
 actually
 be called on the page where the problem is. Then you can step back and you
 will most likely find that your problem was a rather trivial one.
 
 To the other guys: Is there a way in an event handler like onSuccess to
 find
 out which component triggered the event?
 
 On Tue, Jan 5, 2010 at 11:38 AM, lebenski be...@gamesys.co.uk wrote:
 

 Ok I think I'm missing something because I don't understand why this
 would
 happen.

 If I have two pages:

 Page1.tml

 t:layout
 Page 1 Goes Here
 /t:layout

 Page2.tml

 t:layout
 Page 2 Goes Here
 /t:layout

 And a layout...

 Layout.tml (simplified)
 html
 body
  t:form t:id=hello
  ...form content
  /t:form
 /body
 /html

 Layout.java

 ...

 void onSuccessFromHelloForm() {
System.out.println(Hello called);
 }

 Page 1 is accessed using a normal pagelink:

 t:pagelink page=Page1Page1/pagelink

 But Page 2 is returned from a method call on some other page and injected
 using InjectPage:

 SomeOtherPage.java

 @InjectPage
 private Page2 page2;

 Object doSomething() {

 //something happens

 return page2;

 }

 How come the onSuccessFromHelloForm() is called when I submit the hello
 form
 contained in the layout on page1, but not when I submit the hello form
 contained in the layout on page 2?  Why has the origin changed in this
 case?


 Inge Solvoll-2 wrote:
 
  I only suggested it for testing to see if it gets called. If it gets
  called,
  it means that the origin changed, and your FromXXX must be changed.
 
  On Tue, Jan 5, 2010 at 11:23 AM, lebenski be...@gamesys.co.uk wrote:
 
 
  This isn't the form I'm having trouble with.  The Submit a Question
  form
  works fine.
 
  The form that is not working is the LoginForm in the layout.  Using
  onSuccessFromLoginForm works in all other pages except the
 confirmation
  page.  Are you suggesting that I should change the method in my layout
  class
  to onSuccess? this won't work as this method will get called for all
  forms
  on the site (as it resides in the layout).
 
 
  Inge Solvoll-2 wrote:
  
   I think what Howard said was that your FromQuestionForm part won't
  work,
   since the origin changes when the event bubbles up. Change the name
 to
   onSuccess and see if gets called then.
  
   On Tue, Jan 5, 2010 at 10:47 AM, lebenski be...@gamesys.co.uk
 wrote:
  
  
   Hi Igor,
  
   I thought i'd spelled out this issue fairly clearly, but here goes
  again.
   All of my pages use a layout along these lines:
  
   http://tapestry.apache.org/tapestry5/guide/layout.html
  
   Inside this component I have a login form.  This login form works
 on
  all
   pages, except for a specific page called 'Confirmation'.  I use
 this
  page
   slightly differently to the others by injecting it using
 @InjectPage,
   setting a couple of properties on it, and then returning it:
  
   @InjectPage
   private Confirmation confirmation;
  
   Object onSuccessFromQuestionForm() {
 //processing
  confirmation.setType(ConfirmationType.SUCCESS);
 confirmation.setMessage(Messages.get(question-submit));
  
 return confirmation;
}
  
   For some reason, the login form does not work on the Confirmation
  page,
   the
   onSuccessFromLoginForm method that resides within my layout is
 simply
   never
   called.  My hunch is that this issue is something to do with a
 nuance
  of
   the
   @InjectPage annotation that causes the page to behave differently,
 but
   I'm
   really not sure.
  
   I hope this is clearer.
  
  
   Igor Drobiazko wrote:
   
Your explanation is unclear. This way you never get an answer.
  Please
   be
more precise and post more of your code.
   
On Mon, Jan 4, 2010 at 11:07 AM, lebenski be...@gamesys.co.uk
  wrote:
   
   
I have a layout component that contains a login 

Re: [T5.0.18] @InjectedPage does not have access to it's own layout

2010-01-05 Thread lebenski

Thanks for your reply Howard.  Are you suggesting that I need to add this
onSuccess method to my confirmation page as well as keeping it in the
layout?


Howard Lewis Ship wrote:
 
 When an event bubbles up, the origin of the event changes.
 
 Initially, the success event occurs from the form inside the layout
 component.
 
 If the event is not handled there, it becomes a success event *from
 the layout component* (at the page).
 
 -- 
 Howard M. Lewis Ship
 
 Creator of Apache Tapestry
 
 The source for Tapestry training, mentoring and support. Contact me to
 learn how I can get you up and productive in Tapestry fast!
 
 (971) 678-5210
 http://howardlewisship.com
 
 -
 To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
 For additional commands, e-mail: users-h...@tapestry.apache.org
 
 
 

-- 
View this message in context: 
http://old.nabble.com/-T5.0.18--%40InjectedPage-does-not-have-access-to-it%27s-own-layout-tp27010913p27025001.html
Sent from the Tapestry - User mailing list archive at Nabble.com.


-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: [T5.0.18] @InjectedPage does not have access to it's own layout

2010-01-05 Thread lebenski

Hi Igor,

I thought i'd spelled out this issue fairly clearly, but here goes again. 
All of my pages use a layout along these lines:

http://tapestry.apache.org/tapestry5/guide/layout.html

Inside this component I have a login form.  This login form works on all
pages, except for a specific page called 'Confirmation'.  I use this page
slightly differently to the others by injecting it using @InjectPage,
setting a couple of properties on it, and then returning it:

@InjectPage
private Confirmation confirmation;

Object onSuccessFromQuestionForm() {
   //processing
confirmation.setType(ConfirmationType.SUCCESS);
   confirmation.setMessage(Messages.get(question-submit));

   return confirmation;
 } 

For some reason, the login form does not work on the Confirmation page, the
onSuccessFromLoginForm method that resides within my layout is simply never
called.  My hunch is that this issue is something to do with a nuance of the
@InjectPage annotation that causes the page to behave differently, but I'm
really not sure.

I hope this is clearer.


Igor Drobiazko wrote:
 
 Your explanation is unclear. This way you never get an answer. Please be
 more precise and post more of your code.
 
 On Mon, Jan 4, 2010 at 11:07 AM, lebenski be...@gamesys.co.uk wrote:
 

 I have a layout component that contains a login form:

 t:form t:id=loginForm
t:textfield t:id=loginUsernameField t:value=memberName
 height=30/
t:passwordfield t:id=loginPasswordField t:value=password /
t:submit id=loginSubmit value=message:login/
 /t:form

 Page Class:

 Object onSuccessFromLoginForm() {
try{
loggedInMember = loginManager.logUserIn(new Login(memberName,
 password));
} catch(LoginException e) {
//Login Error Processing
}

return Index.class;
 }

 I also have a generic confirmation page which I use for page flows where
 I
 need to present some message to the user.  For example Thanks for
 submitting a question

 SubmitQuestion.java

 @InjectPage
 private Confirmation confirmation;

 Object onSuccessFromQuestionForm() {
//processing
confirmation.setType(ConfirmationType.SUCCESS);
confirmation.setMessage(Messages.get(question-submit));

return confirmation;
 }

 The confirmation template itself is inside the layout:

 t:layout xmlns:t=http://tapestry.apache.org/schema/tapestry_5_1_0.xsd;
${type}br/
${message}
 /t:layout

 However, for some reason I don't seem to have access to the layout from
 this
 confirmation page.  If I try to use the login form, the Index page is
 loaded
 but the user is not logged in.  In fact as far as I can see (through
 debugging), the onSuccessFromLoginForm() method in the Layout is never
 called.

 I'm at a bit of a loss as to why this is happening, as this is working on
 all other pages in my application.  Is there some specific nuance of
 using
 @InjectPage that could be causing this issue?
 --
 View this message in context:
 http://old.nabble.com/-T5.0.18--%40InjectedPage-does-not-have-access-to-it%27s-own-layout-tp27010913p27010913.html
 Sent from the Tapestry - User mailing list archive at Nabble.com.


 -
 To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
 For additional commands, e-mail: users-h...@tapestry.apache.org


 
 
 -- 
 Best regards,
 
 Igor Drobiazko
 http://tapestry5.de/blog
 
 

-- 
View this message in context: 
http://old.nabble.com/-T5.0.18--%40InjectedPage-does-not-have-access-to-it%27s-own-layout-tp27010913p27025941.html
Sent from the Tapestry - User mailing list archive at Nabble.com.


-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: [T5.0.18] @InjectedPage does not have access to it's own layout

2010-01-05 Thread Inge Solvoll
I think what Howard said was that your FromQuestionForm part won't work,
since the origin changes when the event bubbles up. Change the name to
onSuccess and see if gets called then.

On Tue, Jan 5, 2010 at 10:47 AM, lebenski be...@gamesys.co.uk wrote:


 Hi Igor,

 I thought i'd spelled out this issue fairly clearly, but here goes again.
 All of my pages use a layout along these lines:

 http://tapestry.apache.org/tapestry5/guide/layout.html

 Inside this component I have a login form.  This login form works on all
 pages, except for a specific page called 'Confirmation'.  I use this page
 slightly differently to the others by injecting it using @InjectPage,
 setting a couple of properties on it, and then returning it:

 @InjectPage
 private Confirmation confirmation;

 Object onSuccessFromQuestionForm() {
   //processing
confirmation.setType(ConfirmationType.SUCCESS);
   confirmation.setMessage(Messages.get(question-submit));

   return confirmation;
  }

 For some reason, the login form does not work on the Confirmation page, the
 onSuccessFromLoginForm method that resides within my layout is simply never
 called.  My hunch is that this issue is something to do with a nuance of
 the
 @InjectPage annotation that causes the page to behave differently, but I'm
 really not sure.

 I hope this is clearer.


 Igor Drobiazko wrote:
 
  Your explanation is unclear. This way you never get an answer. Please be
  more precise and post more of your code.
 
  On Mon, Jan 4, 2010 at 11:07 AM, lebenski be...@gamesys.co.uk wrote:
 
 
  I have a layout component that contains a login form:
 
  t:form t:id=loginForm
 t:textfield t:id=loginUsernameField t:value=memberName
  height=30/
 t:passwordfield t:id=loginPasswordField t:value=password /
 t:submit id=loginSubmit value=message:login/
  /t:form
 
  Page Class:
 
  Object onSuccessFromLoginForm() {
 try{
 loggedInMember = loginManager.logUserIn(new Login(memberName,
  password));
 } catch(LoginException e) {
 //Login Error Processing
 }
 
 return Index.class;
  }
 
  I also have a generic confirmation page which I use for page flows where
  I
  need to present some message to the user.  For example Thanks for
  submitting a question
 
  SubmitQuestion.java
 
  @InjectPage
  private Confirmation confirmation;
 
  Object onSuccessFromQuestionForm() {
 //processing
 confirmation.setType(ConfirmationType.SUCCESS);
 confirmation.setMessage(Messages.get(question-submit));
 
 return confirmation;
  }
 
  The confirmation template itself is inside the layout:
 
  t:layout xmlns:t=http://tapestry.apache.org/schema/tapestry_5_1_0.xsd
 
 ${type}br/
 ${message}
  /t:layout
 
  However, for some reason I don't seem to have access to the layout from
  this
  confirmation page.  If I try to use the login form, the Index page is
  loaded
  but the user is not logged in.  In fact as far as I can see (through
  debugging), the onSuccessFromLoginForm() method in the Layout is never
  called.
 
  I'm at a bit of a loss as to why this is happening, as this is working
 on
  all other pages in my application.  Is there some specific nuance of
  using
  @InjectPage that could be causing this issue?
  --
  View this message in context:
 
 http://old.nabble.com/-T5.0.18--%40InjectedPage-does-not-have-access-to-it%27s-own-layout-tp27010913p27010913.html
  Sent from the Tapestry - User mailing list archive at Nabble.com.
 
 
  -
  To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
  For additional commands, e-mail: users-h...@tapestry.apache.org
 
 
 
 
  --
  Best regards,
 
  Igor Drobiazko
  http://tapestry5.de/blog
 
 

 --
 View this message in context:
 http://old.nabble.com/-T5.0.18--%40InjectedPage-does-not-have-access-to-it%27s-own-layout-tp27010913p27025941.html
 Sent from the Tapestry - User mailing list archive at Nabble.com.


 -
 To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
 For additional commands, e-mail: users-h...@tapestry.apache.org




Re: [T5.0.18] @InjectedPage does not have access to it's own layout

2010-01-05 Thread lebenski

This isn't the form I'm having trouble with.  The Submit a Question form
works fine.  

The form that is not working is the LoginForm in the layout.  Using
onSuccessFromLoginForm works in all other pages except the confirmation
page.  Are you suggesting that I should change the method in my layout class
to onSuccess? this won't work as this method will get called for all forms
on the site (as it resides in the layout).


Inge Solvoll-2 wrote:
 
 I think what Howard said was that your FromQuestionForm part won't work,
 since the origin changes when the event bubbles up. Change the name to
 onSuccess and see if gets called then.
 
 On Tue, Jan 5, 2010 at 10:47 AM, lebenski be...@gamesys.co.uk wrote:
 

 Hi Igor,

 I thought i'd spelled out this issue fairly clearly, but here goes again.
 All of my pages use a layout along these lines:

 http://tapestry.apache.org/tapestry5/guide/layout.html

 Inside this component I have a login form.  This login form works on all
 pages, except for a specific page called 'Confirmation'.  I use this page
 slightly differently to the others by injecting it using @InjectPage,
 setting a couple of properties on it, and then returning it:

 @InjectPage
 private Confirmation confirmation;

 Object onSuccessFromQuestionForm() {
   //processing
confirmation.setType(ConfirmationType.SUCCESS);
   confirmation.setMessage(Messages.get(question-submit));

   return confirmation;
  }

 For some reason, the login form does not work on the Confirmation page,
 the
 onSuccessFromLoginForm method that resides within my layout is simply
 never
 called.  My hunch is that this issue is something to do with a nuance of
 the
 @InjectPage annotation that causes the page to behave differently, but
 I'm
 really not sure.

 I hope this is clearer.


 Igor Drobiazko wrote:
 
  Your explanation is unclear. This way you never get an answer. Please
 be
  more precise and post more of your code.
 
  On Mon, Jan 4, 2010 at 11:07 AM, lebenski be...@gamesys.co.uk wrote:
 
 
  I have a layout component that contains a login form:
 
  t:form t:id=loginForm
 t:textfield t:id=loginUsernameField t:value=memberName
  height=30/
 t:passwordfield t:id=loginPasswordField t:value=password
 /
 t:submit id=loginSubmit value=message:login/
  /t:form
 
  Page Class:
 
  Object onSuccessFromLoginForm() {
 try{
 loggedInMember = loginManager.logUserIn(new
 Login(memberName,
  password));
 } catch(LoginException e) {
 //Login Error Processing
 }
 
 return Index.class;
  }
 
  I also have a generic confirmation page which I use for page flows
 where
  I
  need to present some message to the user.  For example Thanks for
  submitting a question
 
  SubmitQuestion.java
 
  @InjectPage
  private Confirmation confirmation;
 
  Object onSuccessFromQuestionForm() {
 //processing
 confirmation.setType(ConfirmationType.SUCCESS);
 confirmation.setMessage(Messages.get(question-submit));
 
 return confirmation;
  }
 
  The confirmation template itself is inside the layout:
 
  t:layout
 xmlns:t=http://tapestry.apache.org/schema/tapestry_5_1_0.xsd
 
 ${type}br/
 ${message}
  /t:layout
 
  However, for some reason I don't seem to have access to the layout
 from
  this
  confirmation page.  If I try to use the login form, the Index page is
  loaded
  but the user is not logged in.  In fact as far as I can see (through
  debugging), the onSuccessFromLoginForm() method in the Layout is never
  called.
 
  I'm at a bit of a loss as to why this is happening, as this is working
 on
  all other pages in my application.  Is there some specific nuance of
  using
  @InjectPage that could be causing this issue?
  --
  View this message in context:
 
 http://old.nabble.com/-T5.0.18--%40InjectedPage-does-not-have-access-to-it%27s-own-layout-tp27010913p27010913.html
  Sent from the Tapestry - User mailing list archive at Nabble.com.
 
 
  -
  To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
  For additional commands, e-mail: users-h...@tapestry.apache.org
 
 
 
 
  --
  Best regards,
 
  Igor Drobiazko
  http://tapestry5.de/blog
 
 

 --
 View this message in context:
 http://old.nabble.com/-T5.0.18--%40InjectedPage-does-not-have-access-to-it%27s-own-layout-tp27010913p27025941.html
 Sent from the Tapestry - User mailing list archive at Nabble.com.


 -
 To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
 For additional commands, e-mail: users-h...@tapestry.apache.org


 
 

-- 
View this message in context: 
http://old.nabble.com/-T5.0.18--%40InjectedPage-does-not-have-access-to-it%27s-own-layout-tp27010913p27026345.html
Sent from the Tapestry - User mailing list archive at Nabble.com.



Re: [T5.0.18] @InjectedPage does not have access to it's own layout

2010-01-05 Thread Inge Solvoll
I only suggested it for testing to see if it gets called. If it gets called,
it means that the origin changed, and your FromXXX must be changed.

On Tue, Jan 5, 2010 at 11:23 AM, lebenski be...@gamesys.co.uk wrote:


 This isn't the form I'm having trouble with.  The Submit a Question form
 works fine.

 The form that is not working is the LoginForm in the layout.  Using
 onSuccessFromLoginForm works in all other pages except the confirmation
 page.  Are you suggesting that I should change the method in my layout
 class
 to onSuccess? this won't work as this method will get called for all
 forms
 on the site (as it resides in the layout).


 Inge Solvoll-2 wrote:
 
  I think what Howard said was that your FromQuestionForm part won't
 work,
  since the origin changes when the event bubbles up. Change the name to
  onSuccess and see if gets called then.
 
  On Tue, Jan 5, 2010 at 10:47 AM, lebenski be...@gamesys.co.uk wrote:
 
 
  Hi Igor,
 
  I thought i'd spelled out this issue fairly clearly, but here goes
 again.
  All of my pages use a layout along these lines:
 
  http://tapestry.apache.org/tapestry5/guide/layout.html
 
  Inside this component I have a login form.  This login form works on all
  pages, except for a specific page called 'Confirmation'.  I use this
 page
  slightly differently to the others by injecting it using @InjectPage,
  setting a couple of properties on it, and then returning it:
 
  @InjectPage
  private Confirmation confirmation;
 
  Object onSuccessFromQuestionForm() {
//processing
 confirmation.setType(ConfirmationType.SUCCESS);
confirmation.setMessage(Messages.get(question-submit));
 
return confirmation;
   }
 
  For some reason, the login form does not work on the Confirmation page,
  the
  onSuccessFromLoginForm method that resides within my layout is simply
  never
  called.  My hunch is that this issue is something to do with a nuance of
  the
  @InjectPage annotation that causes the page to behave differently, but
  I'm
  really not sure.
 
  I hope this is clearer.
 
 
  Igor Drobiazko wrote:
  
   Your explanation is unclear. This way you never get an answer. Please
  be
   more precise and post more of your code.
  
   On Mon, Jan 4, 2010 at 11:07 AM, lebenski be...@gamesys.co.uk
 wrote:
  
  
   I have a layout component that contains a login form:
  
   t:form t:id=loginForm
  t:textfield t:id=loginUsernameField t:value=memberName
   height=30/
  t:passwordfield t:id=loginPasswordField t:value=password
  /
  t:submit id=loginSubmit value=message:login/
   /t:form
  
   Page Class:
  
   Object onSuccessFromLoginForm() {
  try{
  loggedInMember = loginManager.logUserIn(new
  Login(memberName,
   password));
  } catch(LoginException e) {
  //Login Error Processing
  }
  
  return Index.class;
   }
  
   I also have a generic confirmation page which I use for page flows
  where
   I
   need to present some message to the user.  For example Thanks for
   submitting a question
  
   SubmitQuestion.java
  
   @InjectPage
   private Confirmation confirmation;
  
   Object onSuccessFromQuestionForm() {
  //processing
  confirmation.setType(ConfirmationType.SUCCESS);
  confirmation.setMessage(Messages.get(question-submit));
  
  return confirmation;
   }
  
   The confirmation template itself is inside the layout:
  
   t:layout
  xmlns:t=http://tapestry.apache.org/schema/tapestry_5_1_0.xsd
  
  ${type}br/
  ${message}
   /t:layout
  
   However, for some reason I don't seem to have access to the layout
  from
   this
   confirmation page.  If I try to use the login form, the Index page is
   loaded
   but the user is not logged in.  In fact as far as I can see (through
   debugging), the onSuccessFromLoginForm() method in the Layout is
 never
   called.
  
   I'm at a bit of a loss as to why this is happening, as this is
 working
  on
   all other pages in my application.  Is there some specific nuance of
   using
   @InjectPage that could be causing this issue?
   --
   View this message in context:
  
 
 http://old.nabble.com/-T5.0.18--%40InjectedPage-does-not-have-access-to-it%27s-own-layout-tp27010913p27010913.html
   Sent from the Tapestry - User mailing list archive at Nabble.com.
  
  
   -
   To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
   For additional commands, e-mail: users-h...@tapestry.apache.org
  
  
  
  
   --
   Best regards,
  
   Igor Drobiazko
   http://tapestry5.de/blog
  
  
 
  --
  View this message in context:
 
 http://old.nabble.com/-T5.0.18--%40InjectedPage-does-not-have-access-to-it%27s-own-layout-tp27010913p27025941.html
  Sent from the Tapestry - User mailing list archive at Nabble.com.
 
 
  -
  To unsubscribe, e-mail: 

Re: [T5.0.18] @InjectedPage does not have access to it's own layout

2010-01-05 Thread lebenski

Ok I think I'm missing something because I don't understand why this would
happen.

If I have two pages:

Page1.tml

t:layout
Page 1 Goes Here
/t:layout

Page2.tml

t:layout
Page 2 Goes Here
/t:layout

And a layout...

Layout.tml (simplified)
html
body
  t:form t:id=hello
  ...form content
  /t:form
/body
/html

Layout.java

...

void onSuccessFromHelloForm() {
System.out.println(Hello called);
}

Page 1 is accessed using a normal pagelink:

t:pagelink page=Page1Page1/pagelink

But Page 2 is returned from a method call on some other page and injected
using InjectPage:

SomeOtherPage.java

@InjectPage
private Page2 page2;

Object doSomething() {

//something happens

return page2;

}

How come the onSuccessFromHelloForm() is called when I submit the hello form
contained in the layout on page1, but not when I submit the hello form
contained in the layout on page 2?  Why has the origin changed in this case?


Inge Solvoll-2 wrote:
 
 I only suggested it for testing to see if it gets called. If it gets
 called,
 it means that the origin changed, and your FromXXX must be changed.
 
 On Tue, Jan 5, 2010 at 11:23 AM, lebenski be...@gamesys.co.uk wrote:
 

 This isn't the form I'm having trouble with.  The Submit a Question
 form
 works fine.

 The form that is not working is the LoginForm in the layout.  Using
 onSuccessFromLoginForm works in all other pages except the confirmation
 page.  Are you suggesting that I should change the method in my layout
 class
 to onSuccess? this won't work as this method will get called for all
 forms
 on the site (as it resides in the layout).


 Inge Solvoll-2 wrote:
 
  I think what Howard said was that your FromQuestionForm part won't
 work,
  since the origin changes when the event bubbles up. Change the name to
  onSuccess and see if gets called then.
 
  On Tue, Jan 5, 2010 at 10:47 AM, lebenski be...@gamesys.co.uk wrote:
 
 
  Hi Igor,
 
  I thought i'd spelled out this issue fairly clearly, but here goes
 again.
  All of my pages use a layout along these lines:
 
  http://tapestry.apache.org/tapestry5/guide/layout.html
 
  Inside this component I have a login form.  This login form works on
 all
  pages, except for a specific page called 'Confirmation'.  I use this
 page
  slightly differently to the others by injecting it using @InjectPage,
  setting a couple of properties on it, and then returning it:
 
  @InjectPage
  private Confirmation confirmation;
 
  Object onSuccessFromQuestionForm() {
//processing
 confirmation.setType(ConfirmationType.SUCCESS);
confirmation.setMessage(Messages.get(question-submit));
 
return confirmation;
   }
 
  For some reason, the login form does not work on the Confirmation
 page,
  the
  onSuccessFromLoginForm method that resides within my layout is simply
  never
  called.  My hunch is that this issue is something to do with a nuance
 of
  the
  @InjectPage annotation that causes the page to behave differently, but
  I'm
  really not sure.
 
  I hope this is clearer.
 
 
  Igor Drobiazko wrote:
  
   Your explanation is unclear. This way you never get an answer.
 Please
  be
   more precise and post more of your code.
  
   On Mon, Jan 4, 2010 at 11:07 AM, lebenski be...@gamesys.co.uk
 wrote:
  
  
   I have a layout component that contains a login form:
  
   t:form t:id=loginForm
  t:textfield t:id=loginUsernameField t:value=memberName
   height=30/
  t:passwordfield t:id=loginPasswordField
 t:value=password
  /
  t:submit id=loginSubmit value=message:login/
   /t:form
  
   Page Class:
  
   Object onSuccessFromLoginForm() {
  try{
  loggedInMember = loginManager.logUserIn(new
  Login(memberName,
   password));
  } catch(LoginException e) {
  //Login Error Processing
  }
  
  return Index.class;
   }
  
   I also have a generic confirmation page which I use for page flows
  where
   I
   need to present some message to the user.  For example Thanks for
   submitting a question
  
   SubmitQuestion.java
  
   @InjectPage
   private Confirmation confirmation;
  
   Object onSuccessFromQuestionForm() {
  //processing
  confirmation.setType(ConfirmationType.SUCCESS);
  confirmation.setMessage(Messages.get(question-submit));
  
  return confirmation;
   }
  
   The confirmation template itself is inside the layout:
  
   t:layout
  xmlns:t=http://tapestry.apache.org/schema/tapestry_5_1_0.xsd
  
  ${type}br/
  ${message}
   /t:layout
  
   However, for some reason I don't seem to have access to the layout
  from
   this
   confirmation page.  If I try to use the login form, the Index page
 is
   loaded
   but the user is not logged in.  In fact as far as I can see
 (through
   debugging), the onSuccessFromLoginForm() method in the Layout is
 never
   called.
  
   I'm at a bit of a loss as to why this is happening, as this is
 working
  on
   all other pages in my 

Re: [T5.0.18] @InjectedPage does not have access to it's own layout

2010-01-05 Thread Inge Solvoll
I don't know. What I DO know is this:

Trying hard to explain why your problem doesn't make sense is not a very
good way of solving it. I do that very often, and I'm always corrected by
someone who asks the obvious questions ;)

The best way is to binary search your way through this, by modifying your
code step by step in order to find out when the event handler will actually
be called on the page where the problem is. Then you can step back and you
will most likely find that your problem was a rather trivial one.

To the other guys: Is there a way in an event handler like onSuccess to find
out which component triggered the event?

On Tue, Jan 5, 2010 at 11:38 AM, lebenski be...@gamesys.co.uk wrote:


 Ok I think I'm missing something because I don't understand why this would
 happen.

 If I have two pages:

 Page1.tml

 t:layout
 Page 1 Goes Here
 /t:layout

 Page2.tml

 t:layout
 Page 2 Goes Here
 /t:layout

 And a layout...

 Layout.tml (simplified)
 html
 body
  t:form t:id=hello
  ...form content
  /t:form
 /body
 /html

 Layout.java

 ...

 void onSuccessFromHelloForm() {
System.out.println(Hello called);
 }

 Page 1 is accessed using a normal pagelink:

 t:pagelink page=Page1Page1/pagelink

 But Page 2 is returned from a method call on some other page and injected
 using InjectPage:

 SomeOtherPage.java

 @InjectPage
 private Page2 page2;

 Object doSomething() {

 //something happens

 return page2;

 }

 How come the onSuccessFromHelloForm() is called when I submit the hello
 form
 contained in the layout on page1, but not when I submit the hello form
 contained in the layout on page 2?  Why has the origin changed in this
 case?


 Inge Solvoll-2 wrote:
 
  I only suggested it for testing to see if it gets called. If it gets
  called,
  it means that the origin changed, and your FromXXX must be changed.
 
  On Tue, Jan 5, 2010 at 11:23 AM, lebenski be...@gamesys.co.uk wrote:
 
 
  This isn't the form I'm having trouble with.  The Submit a Question
  form
  works fine.
 
  The form that is not working is the LoginForm in the layout.  Using
  onSuccessFromLoginForm works in all other pages except the confirmation
  page.  Are you suggesting that I should change the method in my layout
  class
  to onSuccess? this won't work as this method will get called for all
  forms
  on the site (as it resides in the layout).
 
 
  Inge Solvoll-2 wrote:
  
   I think what Howard said was that your FromQuestionForm part won't
  work,
   since the origin changes when the event bubbles up. Change the name to
   onSuccess and see if gets called then.
  
   On Tue, Jan 5, 2010 at 10:47 AM, lebenski be...@gamesys.co.uk
 wrote:
  
  
   Hi Igor,
  
   I thought i'd spelled out this issue fairly clearly, but here goes
  again.
   All of my pages use a layout along these lines:
  
   http://tapestry.apache.org/tapestry5/guide/layout.html
  
   Inside this component I have a login form.  This login form works on
  all
   pages, except for a specific page called 'Confirmation'.  I use this
  page
   slightly differently to the others by injecting it using @InjectPage,
   setting a couple of properties on it, and then returning it:
  
   @InjectPage
   private Confirmation confirmation;
  
   Object onSuccessFromQuestionForm() {
 //processing
  confirmation.setType(ConfirmationType.SUCCESS);
 confirmation.setMessage(Messages.get(question-submit));
  
 return confirmation;
}
  
   For some reason, the login form does not work on the Confirmation
  page,
   the
   onSuccessFromLoginForm method that resides within my layout is simply
   never
   called.  My hunch is that this issue is something to do with a nuance
  of
   the
   @InjectPage annotation that causes the page to behave differently,
 but
   I'm
   really not sure.
  
   I hope this is clearer.
  
  
   Igor Drobiazko wrote:
   
Your explanation is unclear. This way you never get an answer.
  Please
   be
more precise and post more of your code.
   
On Mon, Jan 4, 2010 at 11:07 AM, lebenski be...@gamesys.co.uk
  wrote:
   
   
I have a layout component that contains a login form:
   
t:form t:id=loginForm
   t:textfield t:id=loginUsernameField t:value=memberName
height=30/
   t:passwordfield t:id=loginPasswordField
  t:value=password
   /
   t:submit id=loginSubmit value=message:login/
/t:form
   
Page Class:
   
Object onSuccessFromLoginForm() {
   try{
   loggedInMember = loginManager.logUserIn(new
   Login(memberName,
password));
   } catch(LoginException e) {
   //Login Error Processing
   }
   
   return Index.class;
}
   
I also have a generic confirmation page which I use for page flows
   where
I
need to present some message to the user.  For example Thanks for
submitting a question
   
SubmitQuestion.java
   
@InjectPage
private Confirmation confirmation;
   

Re: [T5.0.18] @InjectedPage does not have access to it's own layout

2010-01-05 Thread Robert Zeigler

No way to find out the triggering component that I'm aware of.

Incidentally, the original poster is incorrect regarding changing  
onSuccessFromXXX to onSuccess.  In T5, events only ever bubble up,  
never back down.  So it's true that onSuccess within the layout  
component will handle any forms contained in the layout component or  
it's subcomponent.  But it won't handle any events contained in the  
pages thaht include layout, or any of those sub-components.  This is  
probably easiest to understand with an example:


Page.tml:
html xmlns:t=http://tapestry.apache.org/schema/tapestry_5_1_0.xsd;
  t:layout
   t:form t:id=pageform
   ...
   /t:form
t:customcomponent t:id=pagecustom/
  /t:layout
/html

layout.tml:
t:container xmlns:t=http://tapestry.apache.org/schema/tapestry_5_1_0.xsd 


t:form t:id=layoutform
...
/t:form
t:customcomponent t:id=layoutcustom/
/t:container

customcomponent.tml:
t:container xmlns:t=http://tapestry.apache.org/schema/tapestry_5_1_0.xsd 


t:form t:id=customform
...
/t:form
/t:container

layout.java:
...
  public void onSuccess() {
System.out.pritnln(Layout handled a form submission);
  }
...


So, when will we see Layout handled a form submission printed to the  
console?
* We will see it when the layoutform is submitted; in this case, the  
originating event will be from layoutform.
* We will also see it when the customform in customcomponent that is  
included in layout.tml (layoutcustom) is submitted.  In this case, the  
originating event as layout sees it will be layoutcustom, so for a  
specific handler, you would have onSuccessFromLayoutcustom.

* We will NOT see it when pageform is submitted.
* We will NOT see it when customform, included via the customcomponent  
on the page (pagecustom) is submitted.  The reason is because the  
container of pagecustom isn't layout, it's Page.
So assuming your layout only has the single login form, you can just  
as well right onSuccess as you can onSuccessFromXYZ.


This behavior is critical for ensuring that components can be dropped  
into any page and Just Work.  Imagine if you used a third party  
component on your page and suddenly your forms stopped working!


Anyway, hth.  Btw, Inge is right... modify your code slowly and find  
out when it starts working.  You'll find the solution to your problem  
faster that way. :)


Robert

On Jan 5, 2010, at 1/55:42 AM , Inge Solvoll wrote:


I don't know. What I DO know is this:

Trying hard to explain why your problem doesn't make sense is not a  
very
good way of solving it. I do that very often, and I'm always  
corrected by

someone who asks the obvious questions ;)

The best way is to binary search your way through this, by  
modifying your
code step by step in order to find out when the event handler will  
actually
be called on the page where the problem is. Then you can step back  
and you

will most likely find that your problem was a rather trivial one.

To the other guys: Is there a way in an event handler like onSuccess  
to find

out which component triggered the event?

On Tue, Jan 5, 2010 at 11:38 AM, lebenski be...@gamesys.co.uk wrote:



Ok I think I'm missing something because I don't understand why  
this would

happen.

If I have two pages:

Page1.tml

t:layout
Page 1 Goes Here
/t:layout

Page2.tml

t:layout
Page 2 Goes Here
/t:layout

And a layout...

Layout.tml (simplified)
html
body
t:form t:id=hello
...form content
/t:form
/body
/html

Layout.java

...

void onSuccessFromHelloForm() {
  System.out.println(Hello called);
}

Page 1 is accessed using a normal pagelink:

t:pagelink page=Page1Page1/pagelink

But Page 2 is returned from a method call on some other page and  
injected

using InjectPage:

SomeOtherPage.java

@InjectPage
private Page2 page2;

Object doSomething() {

//something happens

return page2;

}

How come the onSuccessFromHelloForm() is called when I submit the  
hello

form
contained in the layout on page1, but not when I submit the hello  
form
contained in the layout on page 2?  Why has the origin changed in  
this

case?


Inge Solvoll-2 wrote:


I only suggested it for testing to see if it gets called. If it gets
called,
it means that the origin changed, and your FromXXX must be  
changed.


On Tue, Jan 5, 2010 at 11:23 AM, lebenski be...@gamesys.co.uk  
wrote:




This isn't the form I'm having trouble with.  The Submit a  
Question

form
works fine.

The form that is not working is the LoginForm in the layout.  Using
onSuccessFromLoginForm works in all other pages except the  
confirmation
page.  Are you suggesting that I should change the method in my  
layout

class
to onSuccess? this won't work as this method will get called  
for all

forms
on the site (as it resides in the layout).


Inge Solvoll-2 wrote:


I think what Howard said was that your FromQuestionForm part  
won't

work,
since the origin changes when the event bubbles up. Change the  
name to

onSuccess 

Re: [T5.0.18] @InjectedPage does not have access to it's own layout

2010-01-04 Thread Igor Drobiazko
Your explanation is unclear. This way you never get an answer. Please be
more precise and post more of your code.

On Mon, Jan 4, 2010 at 11:07 AM, lebenski be...@gamesys.co.uk wrote:


 I have a layout component that contains a login form:

 t:form t:id=loginForm
t:textfield t:id=loginUsernameField t:value=memberName
 height=30/
t:passwordfield t:id=loginPasswordField t:value=password /
t:submit id=loginSubmit value=message:login/
 /t:form

 Page Class:

 Object onSuccessFromLoginForm() {
try{
loggedInMember = loginManager.logUserIn(new Login(memberName,
 password));
} catch(LoginException e) {
//Login Error Processing
}

return Index.class;
 }

 I also have a generic confirmation page which I use for page flows where I
 need to present some message to the user.  For example Thanks for
 submitting a question

 SubmitQuestion.java

 @InjectPage
 private Confirmation confirmation;

 Object onSuccessFromQuestionForm() {
//processing
confirmation.setType(ConfirmationType.SUCCESS);
confirmation.setMessage(Messages.get(question-submit));

return confirmation;
 }

 The confirmation template itself is inside the layout:

 t:layout xmlns:t=http://tapestry.apache.org/schema/tapestry_5_1_0.xsd;
${type}br/
${message}
 /t:layout

 However, for some reason I don't seem to have access to the layout from
 this
 confirmation page.  If I try to use the login form, the Index page is
 loaded
 but the user is not logged in.  In fact as far as I can see (through
 debugging), the onSuccessFromLoginForm() method in the Layout is never
 called.

 I'm at a bit of a loss as to why this is happening, as this is working on
 all other pages in my application.  Is there some specific nuance of using
 @InjectPage that could be causing this issue?
 --
 View this message in context:
 http://old.nabble.com/-T5.0.18--%40InjectedPage-does-not-have-access-to-it%27s-own-layout-tp27010913p27010913.html
 Sent from the Tapestry - User mailing list archive at Nabble.com.


 -
 To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
 For additional commands, e-mail: users-h...@tapestry.apache.org




-- 
Best regards,

Igor Drobiazko
http://tapestry5.de/blog


Re: [T5.0.18] @InjectedPage does not have access to it's own layout

2010-01-04 Thread Howard Lewis Ship
When an event bubbles up, the origin of the event changes.

Initially, the success event occurs from the form inside the layout component.

If the event is not handled there, it becomes a success event *from
the layout component* (at the page).

On Mon, Jan 4, 2010 at 12:11 PM, Igor Drobiazko
igor.drobia...@gmail.com wrote:
 Your explanation is unclear. This way you never get an answer. Please be
 more precise and post more of your code.

 On Mon, Jan 4, 2010 at 11:07 AM, lebenski be...@gamesys.co.uk wrote:


 I have a layout component that contains a login form:

 t:form t:id=loginForm
        t:textfield t:id=loginUsernameField t:value=memberName
 height=30/
        t:passwordfield t:id=loginPasswordField t:value=password /
        t:submit id=loginSubmit value=message:login/
 /t:form

 Page Class:

 Object onSuccessFromLoginForm() {
        try{
            loggedInMember = loginManager.logUserIn(new Login(memberName,
 password));
        } catch(LoginException e) {
            //Login Error Processing
        }

        return Index.class;
 }

 I also have a generic confirmation page which I use for page flows where I
 need to present some message to the user.  For example Thanks for
 submitting a question

 SubmitQuestion.java

 @InjectPage
 private Confirmation confirmation;

 Object onSuccessFromQuestionForm() {
        //processing
        confirmation.setType(ConfirmationType.SUCCESS);
        confirmation.setMessage(Messages.get(question-submit));

        return confirmation;
 }

 The confirmation template itself is inside the layout:

 t:layout xmlns:t=http://tapestry.apache.org/schema/tapestry_5_1_0.xsd;
        ${type}br/
        ${message}
 /t:layout

 However, for some reason I don't seem to have access to the layout from
 this
 confirmation page.  If I try to use the login form, the Index page is
 loaded
 but the user is not logged in.  In fact as far as I can see (through
 debugging), the onSuccessFromLoginForm() method in the Layout is never
 called.

 I'm at a bit of a loss as to why this is happening, as this is working on
 all other pages in my application.  Is there some specific nuance of using
 @InjectPage that could be causing this issue?
 --
 View this message in context:
 http://old.nabble.com/-T5.0.18--%40InjectedPage-does-not-have-access-to-it%27s-own-layout-tp27010913p27010913.html
 Sent from the Tapestry - User mailing list archive at Nabble.com.


 -
 To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
 For additional commands, e-mail: users-h...@tapestry.apache.org




 --
 Best regards,

 Igor Drobiazko
 http://tapestry5.de/blog




-- 
Howard M. Lewis Ship

Creator of Apache Tapestry

The source for Tapestry training, mentoring and support. Contact me to
learn how I can get you up and productive in Tapestry fast!

(971) 678-5210
http://howardlewisship.com

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org