Re: [T5] tutorial question
Looks like you missed an important section of the tutorial: excerpt --- We do need a basic GameOver page. src/main/webapp/WEB-INF/GameOver.html: http://tapestry.apache.org/schema/tapestry_5_0_0.xsd";> Game Over! Game Over You guessed the secret number! src/main/java/org/apache/tapestry/tutorial/pages/GameOver.java: package org.apache.tapestry.tutorial.pages; public class GameOver { } With this in place, we can make guesses, and get feedback from the application: /Serge Robert A. Decker-2 wrote: > > I'm teaching myself Tapestry by jumping right into version 5. I'm a > pretty experienced developer and so I'm not ready to give up and go > back to version 4, but I am having what is probably a very basic > problem... > > I'm trying to do the Tapestry 5 tutorial and I'm on the section where > we count the number of guesses on Guess page page: > http://tapestry.apache.org/tapestry5/tutorial1/hilo.html > > The tutorial doesn't fully cover what should be in Guess.java > > This method: > Object onActionFromLink(int guess) { > _count++; > if (guess == _target) { > _gameOver.setup(_count); > return _gameOver; > } > > if (guess < _target) > _message = String.format("%d is too low.", guess); > else > _message = String.format("%d is too high.", guess); > > return null; > } > > GameOver is another page in the app. Not knowing exactly what I > should do, I have declared as a variable in Guess.java: > @InjectPage > GameOver _gameOver; > > > However, this is leading to a NullPointerException, which kind of > makes sense because GameOver isn't persisted. So, I tried: > @InjectPage @Persist > GameOver _gameOver > > But that doesn't fix the problem, and documentation I found in > Tapestry 4 seems to say that you can't declare multiple injection > tags per variable. > > Does anyone have a working Tapestry 5 tutorial? Or can help me with > this specific problem? > > I've also tried something like: > GameOver _gameOver = new GameOver(); > _gameOver.setup(_count); > return _gameOver; > > (the WebObjects way) but that leads to an even weirder exception... > > Thanks, > Robert A. Decker > > - > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > -- View this message in context: http://www.nabble.com/-T5--tutorial-question-tf4487116.html#a12804208 Sent from the Tapestry - User mailing list archive at Nabble.com. - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: [T5] tutorial question
Hi Robert, There is no need to persist the injected page. Your original version should work OK. What exactly the NPE says? Also, as a comment, "back to version 4" is not entirely correct. As a matter of fact, Tapestry 4 and Tapestry 5 seem to be two different frameworks with their own merits (IMHO). Cheers, Alexander -Original Message- From: Robert A. Decker [mailto:[EMAIL PROTECTED] Sent: 20 September 2007 04:08 To: users@tapestry.apache.org Subject: [T5] tutorial question I'm teaching myself Tapestry by jumping right into version 5. I'm a pretty experienced developer and so I'm not ready to give up and go back to version 4, but I am having what is probably a very basic problem... I'm trying to do the Tapestry 5 tutorial and I'm on the section where we count the number of guesses on Guess page page: http://tapestry.apache.org/tapestry5/tutorial1/hilo.html The tutorial doesn't fully cover what should be in Guess.java This method: Object onActionFromLink(int guess) { _count++; if (guess == _target) { _gameOver.setup(_count); return _gameOver; } if (guess < _target) _message = String.format("%d is too low.", guess); else _message = String.format("%d is too high.", guess); return null; } GameOver is another page in the app. Not knowing exactly what I should do, I have declared as a variable in Guess.java: @InjectPage GameOver _gameOver; However, this is leading to a NullPointerException, which kind of makes sense because GameOver isn't persisted. So, I tried: @InjectPage @Persist GameOver _gameOver But that doesn't fix the problem, and documentation I found in Tapestry 4 seems to say that you can't declare multiple injection tags per variable. Does anyone have a working Tapestry 5 tutorial? Or can help me with this specific problem? I've also tried something like: GameOver _gameOver = new GameOver(); _gameOver.setup(_count); return _gameOver; (the WebObjects way) but that leads to an even weirder exception... Thanks, Robert A. Decker - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] -- CONFIDENTIALITY NOTICE: If you have received this email in error, please immediately notify the sender by e-mail at the address shown. This email transmission may contain confidential information. This information is intended only for the use of the individual(s) or entity to whom it is intended even if addressed incorrectly. Please delete it from your files if you are not the intended recipient. Thank you for your compliance. Copyright 2007 CIGNA == - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: [T5] Tutorial question
See "Instance variables must be private": http://tapestry.apache.org/tapestry5/tapestry-core/guide/component-classes.html Cheers, Nick. Robert A. Decker wrote: Thank you! That was it - declaring it private fixed it: private GameOver _gameOver; I now just inject the page but don't persist it. I'll have to try to read up on what you mean by 'enhance private variables'... R On Sep 19, 2007, at 8:20 PM, Robert Zeigler wrote: Background: I've never "done" the T5 tutorial. But I do have functional T5 apps. Few things: 1) In T5, multiple annotations/item are supported 2) You don't need to persist the page. You might need to persist values that each page needs, but you don't need to persist the pages. 3) Tapestry will only enhance private variables. Your declaration: @InjectPage GameOver _gameOver should be: @InjectPage private GameOver _gameOver Check the tapestry logging output; it should warn you that it didn't enhance the _gameOver field. Cheers, Robert On Sep 19, 2007, at 9/1910:09 PM , Robert A. Decker wrote: I'm teaching myself Tapestry by jumping right into version 5. I'm a pretty experienced developer and so I'm not ready to give up and go back to version 4, but I am having what is probably a very basic problem... I'm trying to do the Tapestry 5 tutorial and I'm on the section where we count the number of guesses on Guess page page: http://tapestry.apache.org/tapestry5/tutorial1/hilo.html The tutorial doesn't fully cover what should be in Guess.java This method: Object onActionFromLink(int guess) { _count++; if (guess == _target) { _gameOver.setup(_count); return _gameOver; } if (guess < _target) _message = String.format("%d is too low.", guess); else _message = String.format("%d is too high.", guess); return null; } GameOver is another page in the app. Not knowing exactly what I should do, I have declared as a variable in Guess.java: @InjectPage GameOver _gameOver; However, this is leading to a NullPointerException, which kind of makes sense because GameOver isn't persisted. So, I tried: @InjectPage @Persist GameOver _gameOver But that doesn't fix the problem, and documentation I found in Tapestry 4 seems to say that you can't declare multiple injection tags per variable. Does anyone have a working Tapestry 5 tutorial? Or can help me with this specific problem? I've also tried something like: GameOver _gameOver = new GameOver(); _gameOver.setup(_count); return _gameOver; (the WebObjects way) but that leads to an even weirder exception... Thanks, Robert A. Decker - 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] - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: [T5] Tutorial question
Thank you! That was it - declaring it private fixed it: private GameOver _gameOver; I now just inject the page but don't persist it. I'll have to try to read up on what you mean by 'enhance private variables'... R On Sep 19, 2007, at 8:20 PM, Robert Zeigler wrote: Background: I've never "done" the T5 tutorial. But I do have functional T5 apps. Few things: 1) In T5, multiple annotations/item are supported 2) You don't need to persist the page. You might need to persist values that each page needs, but you don't need to persist the pages. 3) Tapestry will only enhance private variables. Your declaration: @InjectPage GameOver _gameOver should be: @InjectPage private GameOver _gameOver Check the tapestry logging output; it should warn you that it didn't enhance the _gameOver field. Cheers, Robert On Sep 19, 2007, at 9/1910:09 PM , Robert A. Decker wrote: I'm teaching myself Tapestry by jumping right into version 5. I'm a pretty experienced developer and so I'm not ready to give up and go back to version 4, but I am having what is probably a very basic problem... I'm trying to do the Tapestry 5 tutorial and I'm on the section where we count the number of guesses on Guess page page: http://tapestry.apache.org/tapestry5/tutorial1/hilo.html The tutorial doesn't fully cover what should be in Guess.java This method: Object onActionFromLink(int guess) { _count++; if (guess == _target) { _gameOver.setup(_count); return _gameOver; } if (guess < _target) _message = String.format("%d is too low.", guess); else _message = String.format("%d is too high.", guess); return null; } GameOver is another page in the app. Not knowing exactly what I should do, I have declared as a variable in Guess.java: @InjectPage GameOver _gameOver; However, this is leading to a NullPointerException, which kind of makes sense because GameOver isn't persisted. So, I tried: @InjectPage @Persist GameOver _gameOver But that doesn't fix the problem, and documentation I found in Tapestry 4 seems to say that you can't declare multiple injection tags per variable. Does anyone have a working Tapestry 5 tutorial? Or can help me with this specific problem? I've also tried something like: GameOver _gameOver = new GameOver(); _gameOver.setup(_count); return _gameOver; (the WebObjects way) but that leads to an even weirder exception... Thanks, Robert A. Decker - 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]
Re: [T5] Tutorial question
Background: I've never "done" the T5 tutorial. But I do have functional T5 apps. Few things: 1) In T5, multiple annotations/item are supported 2) You don't need to persist the page. You might need to persist values that each page needs, but you don't need to persist the pages. 3) Tapestry will only enhance private variables. Your declaration: @InjectPage GameOver _gameOver should be: @InjectPage private GameOver _gameOver Check the tapestry logging output; it should warn you that it didn't enhance the _gameOver field. Cheers, Robert On Sep 19, 2007, at 9/1910:09 PM , Robert A. Decker wrote: I'm teaching myself Tapestry by jumping right into version 5. I'm a pretty experienced developer and so I'm not ready to give up and go back to version 4, but I am having what is probably a very basic problem... I'm trying to do the Tapestry 5 tutorial and I'm on the section where we count the number of guesses on Guess page page: http://tapestry.apache.org/tapestry5/tutorial1/hilo.html The tutorial doesn't fully cover what should be in Guess.java This method: Object onActionFromLink(int guess) { _count++; if (guess == _target) { _gameOver.setup(_count); return _gameOver; } if (guess < _target) _message = String.format("%d is too low.", guess); else _message = String.format("%d is too high.", guess); return null; } GameOver is another page in the app. Not knowing exactly what I should do, I have declared as a variable in Guess.java: @InjectPage GameOver _gameOver; However, this is leading to a NullPointerException, which kind of makes sense because GameOver isn't persisted. So, I tried: @InjectPage @Persist GameOver _gameOver But that doesn't fix the problem, and documentation I found in Tapestry 4 seems to say that you can't declare multiple injection tags per variable. Does anyone have a working Tapestry 5 tutorial? Or can help me with this specific problem? I've also tried something like: GameOver _gameOver = new GameOver(); _gameOver.setup(_count); return _gameOver; (the WebObjects way) but that leads to an even weirder exception... Thanks, Robert A. Decker - 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]
Re: T5: Tutorial question.
Do a search in the mailing list. This question was answered a while ago. /Serge Alex Shneyderman wrote: > > Hi, all! > > I am trying out tapestry and was going through the tutorial and > noticed that in the section about Guess.java the following: > > Object onActionFromLink(int guess) > { > _count++; > > if (guess == _target) > { > _gameOver.setup(_count); > return _gameOver; > } > > if (guess < _target) > _message = String.format("%d is too low.", guess); > else > _message = String.format("%d is too high.", guess); > > return null; > } > > > this however does not work. I changed the name of the handler to > > Object onAction(int guess) > { > ... > } > > and things started to work as expected. Did I miss something or it is > a mess up in tutorial. > > -- > Thanks, > Alex. > > - > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > -- View this message in context: http://www.nabble.com/T5%3A-Tutorial-question.-tf4166391.html#a11854069 Sent from the Tapestry - User mailing list archive at Nabble.com. - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]