Re: How to generate PropertyExpressionLexer and PropertyExpressionParser
Thanks Andreas, this worked. Uli Andreas Andreou schrieb: Not sure of the 100% correct process, but when running (in tapestry-core) mvn -Dmaven.test.skip compile there are some additional sources generated in target/generated-sources/antlr I guess those need to be included in eclipse source path. On Tue, Jan 20, 2009 at 2:23 PM, Ulrich Stärk u...@spielviel.de wrote: I'm setting up tapestry5 in eclipse and stumbled upon missing PropertyExpressionLexer and PropertyExpressionParser classes. It seems that those have to be generated by antlr first. I tried to run mvn antlr:generate from within the tapestry-core directory, but this failed. How do I generate these classes? Uli - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: [T5] improve documentation
Hi, also a guide/recipes/good practices/tips/chapter for converting JSP applications to Tapestry 5 would be very welcome. At least a paragraph clarifying questions like: Can I have JSPs in my Tapestry 5 application or do I have to have two web applications talking somehow to each other?, How to post a form from JSP to a Tapestry page or vice versa?, ... A guide on clustering. I know this info can be found in many locations on the net, but writing it in Tapestry documentation would imho greatly improve the credibility of the framework for serious web applications. I feel tapestry is missing the scope in the market. It is not advertised in any way, nor as a framework which one can use to quickly make a simple news site, as other frameworks (non java) are better at that (so I hear), nor as a framework which is best for large teams and large applications. Just look at the web page for Zend PHP framework (http://www.zend.com). Which page do you think management like more, zend's or tapestry's? Unfortunately sometimes (too often) the arguments of power outweight the power of arguments and the consequence is, well, We will use the framework which has more flashy homepage!. The community, us, must prove that a simple web application (some forms, administration pages, publishing news, social crap, etc) can be done without having a PhD in Computer Science. Tapestry relies much on convention over configuration paradigm, that is why the documentation must be excelent. Say, for example http://tapestry.apache.org/tapestry5/tapestry-core/ref/org/apache/tapestry5/corelib/components/Form.html. This page is clearly frightening - look at the first paragraph. So many events and none/few of them has a decent explanation/usage scenario/example. IMO all of them should be properly documented or not mentioned at all. The authorization should have a chapter! Tapestry is a very powerful framework and as such the same thing can be done differently, BUT...why should one have to spend days/weeks to implement a decent authentication/authorization system? There should be a guide for common scenarios like form based authentication. Of course one can hunt for example projects and study the guts of them, which in the end is very rewarding, but time consuming. Newcomers should have clear goals on how to implement such things, without jumping to the wiki and other places and fighting the dependency incompatibilities. -Borut 2009/1/13 Ulrich Stärk u...@spielviel.de Hi all, Tapestry's current documentation is very complete, covering almost everything a developer needs to know to be productive with Tapestry. Unfortunately this documentation is clustered across several locations thus making it hard to find information and very hard for beginners to get going. Sometimes even I am annoyed because I don't find the information I'm looking for at the expected place. There is the official user guide, which is no guide in the actual sense of the word but merely a collection of topics using Tapestry-specific vocabulary as the topics, making it hard for a beginner to get started. Then there is the tutorial that gets you started with Tapestry but doesn't go deep enough to know the name of the topic to look for in the user guide when a problem arises or more information on a subject is needed. Thirdly, there is the wiki that contains numerous examples on how to solve common use cases with Tapestry. And lastly there is the component reference that not only contains documentation for a specific component but also contains examples on how to use them to solve common use cases. Today for example, someone on the users mailing list asked for how to have some kind of a dynamic component. He wanted to display a certain component based on the outcome of a function he wrote in his page class. This question has come up before on the list and because of the Static Structure, Dynamic Behavior paradigm - which is a key principle and is not mentioned in the documentation but at the bottom of the start page - the solution is to use the Delegate component with blocks. In the Delegate component reference documentation there is an example covering exactly that use case. But it seems that the user wasn't able to find it - either he didn't look at all or more probably, he looked in the wrong place. How could he possibly know, that the solution to his use case is documented in a component named Delegate? Because I think that the current arrangement of the documentation makes it hard to grasp the concepts of Tapestry, especially for beginners, and to quickly find the information one seeks, I propose the following steps to be taken to improve the documentation: 1. Re-arrange the current documentation to not just be an alphabetically ordered list of topics but instead to be some kind of guide to Tapestry. Group topics that belong together, start with basic topics and end with advanced ones. 2. Print a short description of the purpose
Table and carriage return
Hello everybody, I would like to do a table and in one column, I have several lines that I would like to show on several lines. Something like that: -- | header 1 | header 2 | header 3 | -- | hello 1 | first line | test 1 | | | second line | | -- | hello 2 | first linee| test 2| | | second line | | | | third line| | -- I set these values on the java code and I try to add ' \n\r' or '\r\n' or 'br' on the string but tapestry doesn't understand this carracters. Do you know how to do it ? And I would like that the table doesn't add automatically the carriage return when my string is too long like too. | header 1 | header 2 | header 3 | -- | hello 1 | first line | test 1 | | | second line | | -- | hello 2 | first linee | | --- NOT OK | | | test 2 | | | second line | | | | third line| | -- thank you for your help Cathy -- View this message in context: http://www.nabble.com/Table-and-carriage-return-tp21580648p21580648.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: Table and carriage return
The second issue can be solved with css and the white-space property: http://www.w3.org/TR/CSS21/text.html#propdef-white-space The first issue is probably because you are escaping the br elements. I don't know how you turn that off for a property in Tapestry by heart but it should be quite easy to find in the reference. Cathy_123 wrote, On 21/01/2009 11:40: Hello everybody, I would like to do a table and in one column, I have several lines that I would like to show on several lines. Something like that: -- | header 1 | header 2 | header 3 | -- | hello 1 | first line | test 1 | | | second line | | -- | hello 2 | first linee| test 2| | | second line | | | | third line| | -- I set these values on the java code and I try to add ' \n\r' or '\r\n' or 'br' on the string but tapestry doesn't understand this carracters. Do you know how to do it ? And I would like that the table doesn't add automatically the carriage return when my string is too long like too. | header 1 | header 2 | header 3 | -- | hello 1 | first line | test 1 | | | second line | | -- | hello 2 | first linee | |--- NOT OK | | | test 2 | | | second line | | | | third line| | -- thank you for your help Cathy - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: Table and carriage return
Here is a possible answer to your first issue: http://tapestry.apache.org/tapestry5/tapestry-core/ref/org/apache/tapestry5/corelib/components/OutputRaw.html Olivier Jacquet wrote, On 21/01/2009 11:50: The second issue can be solved with css and the white-space property: http://www.w3.org/TR/CSS21/text.html#propdef-white-space The first issue is probably because you are escaping the br elements. I don't know how you turn that off for a property in Tapestry by heart but it should be quite easy to find in the reference. Cathy_123 wrote, On 21/01/2009 11:40: Hello everybody, I would like to do a table and in one column, I have several lines that I would like to show on several lines. Something like that: -- | header 1 | header 2 | header 3 | -- | hello 1 | first line | test 1 | | | second line | | -- | hello 2 | first linee| test 2 | | | second line | | | | third line | | -- I set these values on the java code and I try to add ' \n\r' or '\r\n' or 'br' on the string but tapestry doesn't understand this carracters. Do you know how to do it ? And I would like that the table doesn't add automatically the carriage return when my string is too long like too. | header 1 | header 2 | header 3 | -- | hello 1 | first line | test 1 | | | second line | | -- | hello 2 | first linee | |--- NOT OK | | | test 2 | | | second line | | | | third line | | -- thank you for your help Cathy - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: Table and carriage return
On Wed, Jan 21, 2009 at 8:40 AM, Cathy_123 ndgt...@yahoo.com wrote: I set these values on the java code and I try to add ' \n\r' or '\r\n' or 'br' on the string but tapestry doesn't understand this carracters. Do you know how to do it ? HTML completely ignores newline (\n, \r) characters unless they're surrounded by a pre tag. By the way, Tapestry templates *must* be valid XML, so you should use br/ in your templates, not br. By default, Tapestry converts the character in lt;, in gt; , etc. The OutputRaw component (http://tapestry.apache.org/tapestry5/tapestry-core/ref/org/apache/tapestry5/corelib/components/OutputRaw.html) does not do this conversion, so it can be a solution to your problem. And I would like that the table doesn't add automatically the carriage return when my string is too long like too. This is a pure HTML question, not Tapestry related. And I don't know the answer . . . Maybe you can try the pre tag. -- Thiago - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: Table and carriage return
Thank you for your answer, but I use Tapestry 4, are there another solutions or I have to change the version ? It's a project of my company so it's difficult to change ... Thank you for your help cathy Thiago HP wrote: On Wed, Jan 21, 2009 at 8:40 AM, Cathy_123 ndgt...@yahoo.com wrote: I set these values on the java code and I try to add ' \n\r' or '\r\n' or 'br' on the string but tapestry doesn't understand this carracters. Do you know how to do it ? HTML completely ignores newline (\n, \r) characters unless they're surrounded by a pre tag. By the way, Tapestry templates *must* be valid XML, so you should use br/ in your templates, not br. By default, Tapestry converts the character in lt;, in gt; , etc. The OutputRaw component (http://tapestry.apache.org/tapestry5/tapestry-core/ref/org/apache/tapestry5/corelib/components/OutputRaw.html) does not do this conversion, so it can be a solution to your problem. And I would like that the table doesn't add automatically the carriage return when my string is too long like too. This is a pure HTML question, not Tapestry related. And I don't know the answer . . . Maybe you can try the pre tag. -- Thiago - 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://www.nabble.com/Table-and-carriage-return-tp21580648p21581350.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: Table and carriage return
Thank you for your answer, but I use Tapestry 4, are there another solutions or I have to change the version ? It's a project of my company so it's difficult to change ... Thank you for your help cathy Olivier Jacquet wrote: Here is a possible answer to your first issue: http://tapestry.apache.org/tapestry5/tapestry-core/ref/org/apache/tapestry5/corelib/components/OutputRaw.html Olivier Jacquet wrote, On 21/01/2009 11:50: The second issue can be solved with css and the white-space property: http://www.w3.org/TR/CSS21/text.html#propdef-white-space The first issue is probably because you are escaping the br elements. I don't know how you turn that off for a property in Tapestry by heart but it should be quite easy to find in the reference. Cathy_123 wrote, On 21/01/2009 11:40: Hello everybody, I would like to do a table and in one column, I have several lines that I would like to show on several lines. Something like that: -- | header 1 | header 2 | header 3 | -- | hello 1 | first line | test 1 | | | second line | | -- | hello 2 | first linee| test 2 | | | second line | | | | third line | | -- I set these values on the java code and I try to add ' \n\r' or '\r\n' or 'br' on the string but tapestry doesn't understand this carracters. Do you know how to do it ? And I would like that the table doesn't add automatically the carriage return when my string is too long like too. | header 1 | header 2 | header 3 | -- | hello 1 | first line | test 1 | | | second line | | -- | hello 2 | first linee | |--- NOT OK | | | test 2 | | | second line | | | | third line | | -- thank you for your help Cathy - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org - 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://www.nabble.com/Table-and-carriage-return-tp21580648p21581363.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
1 week of Tapestry
Hi everyone!Im writting to talk about my impressions after 1 week (6 work days) of Tapestry. I study and work with programming since 98, when I started with Turbo Pascal. In 2003 I've met PHP and seen that web programming was what I want to do. Since of it I've been working in bigger and bigger projects and clients (went from forums, forms and Real State websites to full ajax image manipulation web system). Since my first C++ class I hated java... Cause C is good? Not, cause the teacher ended each sentence with java do it too!. Ive even got in some courses, but never got into it. Even in last one and half year, discussed a lot with my colleagues about how workfull is java and how ridiculous it was to see them waste time with so few progress. Anyway, few days ago I've decided to learn java, just to proof that it was a waste of time... Happens that I've met Tapestry and it is amazing. I've enjoyed a lot learning and using it, even with my very limited knowledge in java, I've managed to make a lot of things in just one week. Maybe the best highlight to talk about is the community. Even slow as the most java comunities I've met, it is far friendly and dedicated, in a point that even when someone gives you a 'RTFM' is friendly, something unique at my experiences. With this small testimonial, I want to thank a lot to all members (freenode guys specially) for being patient and friendly, I hope soon I have time to write up a simple and clean tutorial about T5 and maybe can help up it to grow (it may have more php developers trying java and failing). thanks again SidGBF
RE: [T5] improve documentation
I think we are all in agreement that the documentation needs a radical overhaul (and lots to be written). The next question is, who is going to do it? A while ago someone proposed a book on T5. A small group from here organised a separate discussion group and went off to work on it (I have no idea how it is going. Does anyone know?) Maybe a similar thing should be done w.r.t this current issue? c. -Original Message- From: Borut Bolčina [mailto:borut.bolc...@gmail.com] Sent: 21 January 2009 08:58 To: Tapestry users Subject: Re: [T5] improve documentation Hi, also a guide/recipes/good practices/tips/chapter for converting JSP applications to Tapestry 5 would be very welcome. At least a paragraph clarifying questions like: Can I have JSPs in my Tapestry 5 application or do I have to have two web applications talking somehow to each other?, How to post a form from JSP to a Tapestry page or vice versa?, ... A guide on clustering. I know this info can be found in many locations on the net, but writing it in Tapestry documentation would imho greatly improve the credibility of the framework for serious web applications. I feel tapestry is missing the scope in the market. It is not advertised in any way, nor as a framework which one can use to quickly make a simple news site, as other frameworks (non java) are better at that (so I hear), nor as a framework which is best for large teams and large applications. Just look at the web page for Zend PHP framework (http://www.zend.com). Which page do you think management like more, zend's or tapestry's? Unfortunately sometimes (too often) the arguments of power outweight the power of arguments and the consequence is, well, We will use the framework which has more flashy homepage!. The community, us, must prove that a simple web application (some forms, administration pages, publishing news, social crap, etc) can be done without having a PhD in Computer Science. Tapestry relies much on convention over configuration paradigm, that is why the documentation must be excelent. Say, for example http://tapestry.apache.org/tapestry5/tapestry-core/ref/org/apache/tapestry5/corelib/components/Form.html. This page is clearly frightening - look at the first paragraph. So many events and none/few of them has a decent explanation/usage scenario/example. IMO all of them should be properly documented or not mentioned at all. The authorization should have a chapter! Tapestry is a very powerful framework and as such the same thing can be done differently, BUT...why should one have to spend days/weeks to implement a decent authentication/authorization system? There should be a guide for common scenarios like form based authentication. Of course one can hunt for example projects and study the guts of them, which in the end is very rewarding, but time consuming. Newcomers should have clear goals on how to implement such things, without jumping to the wiki and other places and fighting the dependency incompatibilities. -Borut 2009/1/13 Ulrich Stärk u...@spielviel.de Hi all, Tapestry's current documentation is very complete, covering almost everything a developer needs to know to be productive with Tapestry. Unfortunately this documentation is clustered across several locations thus making it hard to find information and very hard for beginners to get going. Sometimes even I am annoyed because I don't find the information I'm looking for at the expected place. There is the official user guide, which is no guide in the actual sense of the word but merely a collection of topics using Tapestry-specific vocabulary as the topics, making it hard for a beginner to get started. Then there is the tutorial that gets you started with Tapestry but doesn't go deep enough to know the name of the topic to look for in the user guide when a problem arises or more information on a subject is needed. Thirdly, there is the wiki that contains numerous examples on how to solve common use cases with Tapestry. And lastly there is the component reference that not only contains documentation for a specific component but also contains examples on how to use them to solve common use cases. Today for example, someone on the users mailing list asked for how to have some kind of a dynamic component. He wanted to display a certain component based on the outcome of a function he wrote in his page class. This question has come up before on the list and because of the Static Structure, Dynamic Behavior paradigm - which is a key principle and is not mentioned in the documentation but at the bottom of the start page - the solution is to use the Delegate component with blocks. In the Delegate component reference documentation there is an example covering exactly that use case. But it seems that the user wasn't able to find it - either he didn't look at all or more probably, he looked in the wrong place. How could he possibly know, that the solution to his use case is documented
Re: 1 week of Tapestry
Sid Ferreira wrote: [...] With this small testimonial, I want to thank a lot to all members (freenode guys specially) for being patient and friendly, I hope soon I have time to write up a simple and clean tutorial about T5 and maybe can help up it to grow (it may have more php developers trying java and failing). Thanks for the mail, it's a good reward in itself for the time spent :) As a reminder, there is an IRC chan dedicated to Tapestry : #tapestry on freenode. Don't hesitate to join us ! -- Francois Armand Etudes Développements J2EE Groupe Linagora - http://www.linagora.com Tél.: +33 (0)1 58 18 68 28 --- http://fanf42.blogspot.com InterLDAP - http://interldap.org FederID - http://www.federid.org/ Open Source identities management and federation - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
RE: [Spam Rating:3.18] Re: Table and carriage return
Hello, I have not used T4 going from T3 to T5 but I assume most of the components are the same. If you are using the standard insert component you can just declare the raw parameter as true so you output is changed in any way: component id=insertText type=Insert binding name=value expression=message/binding static-binding name=rawTRUE/static-binding /component --James -Original Message- From: Cathy_123 [mailto:ndgt...@yahoo.com] Sent: January-21-09 7:30 AM To: users@tapestry.apache.org Subject: [Spam Rating:3.18] Re: Table and carriage return Thank you for your answer, but I use Tapestry 4, are there another solutions or I have to change the version ? It's a project of my company so it's difficult to change ... Thank you for your help cathy Thiago HP wrote: On Wed, Jan 21, 2009 at 8:40 AM, Cathy_123 ndgt...@yahoo.com wrote: I set these values on the java code and I try to add ' \n\r' or '\r\n' or 'br' on the string but tapestry doesn't understand this carracters. Do you know how to do it ? HTML completely ignores newline (\n, \r) characters unless they're surrounded by a pre tag. By the way, Tapestry templates *must* be valid XML, so you should use br/ in your templates, not br. By default, Tapestry converts the character in lt;, in gt; , etc. The OutputRaw component (http://tapestry.apache.org/tapestry5/tapestry-core/ref/org/apache/tapestry5 /corelib/components/OutputRaw.html) does not do this conversion, so it can be a solution to your problem. And I would like that the table doesn't add automatically the carriage return when my string is too long like too. This is a pure HTML question, not Tapestry related. And I don't know the answer . . . Maybe you can try the pre tag. -- Thiago - 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://www.nabble.com/Table-and-carriage-return-tp21580648p21581350.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 - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
BeanEditor/BeanEditForm: getting the edited object
Hi! I've been learning how to write property edition/visualization blocks for BeanEditor and BeanEditForm. Using @Environmental private PropertyEditContext editContext; I'm able to get the property being edited and it's value. How could I get the object being edited? (The one passed to the object parameter of BeanEditor and BeanEditForm). Thanks in advance. -- Thiago - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
RE: [Spam Rating:3.18] Re: Table and carriage return
Thank you for this issue, It's OK for the carriage return but I have a little problem again I have to format the value of the column. Instead to do component id=pagesTable type=PagesTable binding name=source value=myDataModel/ binding name=columns value=literal:!column1,!,!column2/ /component I do component id=pagesTable type=PagesTable binding name=source value=myDataModel/ binding name=columns value=literal:!column1,!,=column2Column/ /component because column2 is a List of data. So with the code java, I use ITableColumnEvaluator and read the list and return list.get(0) + br/ +list.get(1) + br/ +list.get(2)... so if I have a insert, I do component id=pagesTable type=PagesTable binding name=source value=myDataModel/ binding name=columns value=literal:!column1,!,!columnFormat/ /component component id=columnFormatColumnValue type=Block/ component id=columnFormat type=Insert binding name=value value=components.pagesTable.tableRow.column2Column/ binding name=raw value=true/ /component But I have an exception because of binding name=value value=components.pagesTable.tableRow.column2Column/ How can I do to format column2 with Insert (format column2 for each line of table) ? thank you for your help Cathy James Sherwood wrote: Hello, I have not used T4 going from T3 to T5 but I assume most of the components are the same. If you are using the standard insert component you can just declare the raw parameter as true so you output is changed in any way: component id=insertText type=Insert binding name=value expression=message/binding static-binding name=rawTRUE/static-binding /component --James -Original Message- From: Cathy_123 [mailto:ndgt...@yahoo.com] Sent: January-21-09 7:30 AM To: users@tapestry.apache.org Subject: [Spam Rating:3.18] Re: Table and carriage return Thank you for your answer, but I use Tapestry 4, are there another solutions or I have to change the version ? It's a project of my company so it's difficult to change ... Thank you for your help cathy Thiago HP wrote: On Wed, Jan 21, 2009 at 8:40 AM, Cathy_123 ndgt...@yahoo.com wrote: I set these values on the java code and I try to add ' \n\r' or '\r\n' or 'br' on the string but tapestry doesn't understand this carracters. Do you know how to do it ? HTML completely ignores newline (\n, \r) characters unless they're surrounded by a pre tag. By the way, Tapestry templates *must* be valid XML, so you should use br/ in your templates, not br. By default, Tapestry converts the character in lt;, in gt; , etc. The OutputRaw component (http://tapestry.apache.org/tapestry5/tapestry-core/ref/org/apache/tapestry5 /corelib/components/OutputRaw.html) does not do this conversion, so it can be a solution to your problem. And I would like that the table doesn't add automatically the carriage return when my string is too long like too. This is a pure HTML question, not Tapestry related. And I don't know the answer . . . Maybe you can try the pre tag. -- Thiago - 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://www.nabble.com/Table-and-carriage-return-tp21580648p21581350.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 - 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://www.nabble.com/Table-and-carriage-return-tp21580648p21583339.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
Doubts in Tapestry
Hi folks!After a while Im writting again, I hope this time with enough details. My mission was buid a small support screen where a user logs and has access to a list of users of the client. The details: 1) The url is used to define the client (a.t5.com is one and b.t5.com is another client) 2) The user needs to log in 3) If, after login, the user changes the url, it must logoff or something, but the new client must be loaded 4) The users belong to one and only one client After a long brawl with documentations, I finally found a small solution (wich I dunno how to code neighter if it is correct), and I would like to have a help: 1) Create a MyContextService, wich has an ApplicationState object 2) Create a @Private annotation (Dispatcher docs, but not clear how to finish it) 3) Create 2 pages, one to login and another to list, wich extends MyContextService 4) Create a dispatcher, wich extends MyContextService the idea: 1) Dispatcher is called, identify the client and set/reset it 2) If user is logged (didn't decided this part yet) it validates the Client - User relation 3) If not logged, check if has a submit and try to login 4) If now the user is not logged, forward in server side to the login 5) Dispatcher forward to list So, the questions: 1) How to finish up the @Private? ( http://wiki.apache.org/tapestry/Tapestry5HowToControlAccess) I dunno what to ser in the type for instance 2) How to server-side forward? 3) Using ASO (or AOS?) in a super class, isn't the same (and so useless to do) to have a protected static property in MyContextService? Thanks in advance folks! -- Sidney G B Ferreira Desenvolvedor Web - Tibox Innovations
Re: [T5] improve documentation
I don't think that someone has to be appointed to do it. Everyone can contribute by writing an improvement, opening an issue in JIRA and attaching the improvement to it. As to the book you mentioned, I think the initiative came to a halt again, shortly after it was started. Uli Newham, Cameron schrieb: I think we are all in agreement that the documentation needs a radical overhaul (and lots to be written). The next question is, who is going to do it? A while ago someone proposed a book on T5. A small group from here organised a separate discussion group and went off to work on it (I have no idea how it is going. Does anyone know?) Maybe a similar thing should be done w.r.t this current issue? c. -Original Message- From: Borut Bolčina [mailto:borut.bolc...@gmail.com] Sent: 21 January 2009 08:58 To: Tapestry users Subject: Re: [T5] improve documentation Hi, also a guide/recipes/good practices/tips/chapter for converting JSP applications to Tapestry 5 would be very welcome. At least a paragraph clarifying questions like: Can I have JSPs in my Tapestry 5 application or do I have to have two web applications talking somehow to each other?, How to post a form from JSP to a Tapestry page or vice versa?, ... A guide on clustering. I know this info can be found in many locations on the net, but writing it in Tapestry documentation would imho greatly improve the credibility of the framework for serious web applications. I feel tapestry is missing the scope in the market. It is not advertised in any way, nor as a framework which one can use to quickly make a simple news site, as other frameworks (non java) are better at that (so I hear), nor as a framework which is best for large teams and large applications. Just look at the web page for Zend PHP framework (http://www.zend.com). Which page do you think management like more, zend's or tapestry's? Unfortunately sometimes (too often) the arguments of power outweight the power of arguments and the consequence is, well, We will use the framework which has more flashy homepage!. The community, us, must prove that a simple web application (some forms, administration pages, publishing news, social crap, etc) can be done without having a PhD in Computer Science. Tapestry relies much on convention over configuration paradigm, that is why the documentation must be excelent. Say, for example http://tapestry.apache.org/tapestry5/tapestry-core/ref/org/apache/tapestry5/corelib/components/Form.html. This page is clearly frightening - look at the first paragraph. So many events and none/few of them has a decent explanation/usage scenario/example. IMO all of them should be properly documented or not mentioned at all. The authorization should have a chapter! Tapestry is a very powerful framework and as such the same thing can be done differently, BUT...why should one have to spend days/weeks to implement a decent authentication/authorization system? There should be a guide for common scenarios like form based authentication. Of course one can hunt for example projects and study the guts of them, which in the end is very rewarding, but time consuming. Newcomers should have clear goals on how to implement such things, without jumping to the wiki and other places and fighting the dependency incompatibilities. -Borut 2009/1/13 Ulrich Stärk u...@spielviel.de Hi all, Tapestry's current documentation is very complete, covering almost everything a developer needs to know to be productive with Tapestry. Unfortunately this documentation is clustered across several locations thus making it hard to find information and very hard for beginners to get going. Sometimes even I am annoyed because I don't find the information I'm looking for at the expected place. There is the official user guide, which is no guide in the actual sense of the word but merely a collection of topics using Tapestry-specific vocabulary as the topics, making it hard for a beginner to get started. Then there is the tutorial that gets you started with Tapestry but doesn't go deep enough to know the name of the topic to look for in the user guide when a problem arises or more information on a subject is needed. Thirdly, there is the wiki that contains numerous examples on how to solve common use cases with Tapestry. And lastly there is the component reference that not only contains documentation for a specific component but also contains examples on how to use them to solve common use cases. Today for example, someone on the users mailing list asked for how to have some kind of a dynamic component. He wanted to display a certain component based on the outcome of a function he wrote in his page class. This question has come up before on the list and because of the Static Structure, Dynamic Behavior paradigm - which is a key principle and is not mentioned in the documentation but at the bottom of the start page - the solution is to use the Delegate component with blocks. In the Delegate
Re: Tapestry 4.1 Widget
Thanks for your willingness to help. My Direct link looks like this: JSON Test Where LuceneFieldData is the name of my component. It implements IJSONRender and has a renderComponent method that uses a IJSONWriter. The RawUrlLinkRenderer throws a class cannot be found exception. I'm guessing this is in a jar other than tapestry framework? When removing the renderer parameter I get an exception that the Direct Link expects a Listener. What should I provide? Thanks. Rich Hephner Andreas Andreou-2 wrote: Just get the url of a directlink by any of the following: - Render a hidden direct link and get it's href, or - Render a direct link and set the renderer parameter to http://tapestry.apache.org/tapestry4.1/apidocs/org/apache/tapestry/contrib/link/RawURLLinkRenderer.html - or, generate the link with code (see how direct service/link does it - you component would have to implement IDirect) On Tue, Jan 20, 2009 at 6:28 PM, otto95 rich.heph...@gmail.com wrote: I'm sorry for coming to this conversation late, but I have exactly the same issue. I'd like to do as you suggest, but how do you get the url for a component? I have a component that implements IJSONRender, but I can't figure out how to access it through a browser to get it's json output. Do I have to include it in something? Thanks. Rich Hephner Andreas Andreou-2 wrote: Check out dojo sources: the ComboBox widget and the dojo.io.bind calls So, if you have a url, you can do something like: dojo.io.bind({url:url,load:myFunction,mimetype:text/json}); and process the results in your function the way you like. Those results are the ones that renderComponent(IJSONWriter writer, IRequestCycle cycle) generates becuase of the text/json mimetype On Wed, Dec 17, 2008 at 8:56 PM, Stopp, Bryan bryan.st...@argushealth.com wrote: So I mis-represented my problem in my first post. What I'm really trying to do is: 1. Add an onclick() function to a component, which triggers a server-side method 2. Refresh another component on the page when the onclick has completed. All of this is for T4.1 by the way. I selected using the IDirect interface and generating a URL for the onclick method to call. However I don't know how to make tapestry/dojo call to that URL, nor how to tell tapestry to refresh the other component. I don't believe I can use a @EventListener as each component has a generated ClientID and according to the spec the targets attribute of this annotation has to have a unique ID. I've been trying to look at the existing Dojo examples but they and the documentation aren't of much help. Does anyone have any examples of components/widgets similar to this? -Bryan Stopp PRIVILEGED AND CONFIDENTIAL This email transmission contains privileged and confidential information intended only for the use of the individual or entity named above. If the reader of the email is not the intended recipient or the employee or agent responsible for delivering it to the intended recipient, you are hereby notified that any use, dissemination or copying of this email transmission is strictly prohibited by the sender. If you have received this transmission in error, please delete the email and immediately notify the sender via the email return address or mailto:postmas...@argushealth.com. Thank you. - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org -- Andreas Andreou - andy...@apache.org - http://blog.andyhot.gr Tapestry / Tacos developer Open Source / JEE Consulting - 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://n2.nabble.com/Tapestry-4.1-Widget-tp1668522p2187365.html Sent from the Tapestry Users 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 -- Andreas Andreou - andy...@apache.org - http://blog.andyhot.gr Tapestry / Tacos developer Open Source / JEE Consulting - 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://n2.nabble.com/Tapestry-4.1-Widget-tp1668522p2192339.html Sent from the Tapestry Users 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: RE: Re: Table and carriage return
Hello, What is the exception you are getting? --James -Original Message- From: Cathy_123 [mailto:ndgt...@yahoo.com] Sent: January-21-09 9:40 AM To: users@tapestry.apache.org Subject: [Spam Rating:3.18] RE: [Spam Rating:3.18] Re: Table and carriage return Thank you for this issue, It's OK for the carriage return but I have a little problem again I have to format the value of the column. Instead to do component id=pagesTable type=PagesTable binding name=source value=myDataModel/ binding name=columns value=literal:!column1,!,!column2/ /component I do component id=pagesTable type=PagesTable binding name=source value=myDataModel/ binding name=columns value=literal:!column1,!,=column2Column/ /component because column2 is a List of data. So with the code java, I use ITableColumnEvaluator and read the list and return list.get(0) + br/ +list.get(1) + br/ +list.get(2)... so if I have a insert, I do component id=pagesTable type=PagesTable binding name=source value=myDataModel/ binding name=columns value=literal:!column1,!,!columnFormat/ /component component id=columnFormatColumnValue type=Block/ component id=columnFormat type=Insert binding name=value value=components.pagesTable.tableRow.column2Column/ binding name=raw value=true/ /component But I have an exception because of binding name=value value=components.pagesTable.tableRow.column2Column/ How can I do to format column2 with Insert (format column2 for each line of table) ? thank you for your help Cathy James Sherwood wrote: Hello, I have not used T4 going from T3 to T5 but I assume most of the components are the same. If you are using the standard insert component you can just declare the raw parameter as true so you output is changed in any way: component id=insertText type=Insert binding name=value expression=message/binding static-binding name=rawTRUE/static-binding /component --James -Original Message- From: Cathy_123 [mailto:ndgt...@yahoo.com] Sent: January-21-09 7:30 AM To: users@tapestry.apache.org Subject: [Spam Rating:3.18] Re: Table and carriage return Thank you for your answer, but I use Tapestry 4, are there another solutions or I have to change the version ? It's a project of my company so it's difficult to change ... Thank you for your help cathy Thiago HP wrote: On Wed, Jan 21, 2009 at 8:40 AM, Cathy_123 ndgt...@yahoo.com wrote: I set these values on the java code and I try to add ' \n\r' or '\r\n' or 'br' on the string but tapestry doesn't understand this carracters. Do you know how to do it ? HTML completely ignores newline (\n, \r) characters unless they're surrounded by a pre tag. By the way, Tapestry templates *must* be valid XML, so you should use br/ in your templates, not br. By default, Tapestry converts the character in lt;, in gt; , etc. The OutputRaw component (http://tapestry.apache.org/tapestry5/tapestry-core/ref/org/apache/tapestry5 /corelib/components/OutputRaw.html) does not do this conversion, so it can be a solution to your problem. And I would like that the table doesn't add automatically the carriage return when my string is too long like too. This is a pure HTML question, not Tapestry related. And I don't know the answer . . . Maybe you can try the pre tag. -- Thiago - 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://www.nabble.com/Table-and-carriage-return-tp21580648p21581350.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 - 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://www.nabble.com/Table-and-carriage-return-tp21580648p21583339.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 - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: [T5] improve documentation
Everyone can contribute by writing an improvement Absolutely! Tapestry is community driven with a small team of developers... they have limited time and simply can't do it all. The documentation task should be given to the community and done Wiki style. There are many people answering questions on this list who are not committers, the docs would be vastly improved with their collective input. Cheers Peter - Original Message - From: Ulrich Stärk u...@spielviel.de To: Tapestry users users@tapestry.apache.org Sent: Wednesday, 21 January, 2009 16:24:20 GMT +02:00 Athens, Beirut, Bucharest, Istanbul Subject: Re: [T5] improve documentation I don't think that someone has to be appointed to do it. Everyone can contribute by writing an improvement, opening an issue in JIRA and attaching the improvement to it. As to the book you mentioned, I think the initiative came to a halt again, shortly after it was started. Uli Newham, Cameron schrieb: I think we are all in agreement that the documentation needs a radical overhaul (and lots to be written). The next question is, who is going to do it? A while ago someone proposed a book on T5. A small group from here organised a separate discussion group and went off to work on it (I have no idea how it is going. Does anyone know?) Maybe a similar thing should be done w.r.t this current issue? c. -Original Message- From: Borut Bolčina [mailto:borut.bolc...@gmail.com] Sent: 21 January 2009 08:58 To: Tapestry users Subject: Re: [T5] improve documentation Hi, also a guide/recipes/good practices/tips/chapter for converting JSP applications to Tapestry 5 would be very welcome. At least a paragraph clarifying questions like: Can I have JSPs in my Tapestry 5 application or do I have to have two web applications talking somehow to each other?, How to post a form from JSP to a Tapestry page or vice versa?, ... A guide on clustering. I know this info can be found in many locations on the net, but writing it in Tapestry documentation would imho greatly improve the credibility of the framework for serious web applications. I feel tapestry is missing the scope in the market. It is not advertised in any way, nor as a framework which one can use to quickly make a simple news site, as other frameworks (non java) are better at that (so I hear), nor as a framework which is best for large teams and large applications. Just look at the web page for Zend PHP framework (http://www.zend.com). Which page do you think management like more, zend's or tapestry's? Unfortunately sometimes (too often) the arguments of power outweight the power of arguments and the consequence is, well, We will use the framework which has more flashy homepage!. The community, us, must prove that a simple web application (some forms, administration pages, publishing news, social crap, etc) can be done without having a PhD in Computer Science. Tapestry relies much on convention over configuration paradigm, that is why the documentation must be excelent. Say, for example http://tapestry.apache.org/tapestry5/tapestry-core/ref/org/apache/tapestry5/corelib/components/Form.html. This page is clearly frightening - look at the first paragraph. So many events and none/few of them has a decent explanation/usage scenario/example. IMO all of them should be properly documented or not mentioned at all. The authorization should have a chapter! Tapestry is a very powerful framework and as such the same thing can be done differently, BUT...why should one have to spend days/weeks to implement a decent authentication/authorization system? There should be a guide for common scenarios like form based authentication. Of course one can hunt for example projects and study the guts of them, which in the end is very rewarding, but time consuming. Newcomers should have clear goals on how to implement such things, without jumping to the wiki and other places and fighting the dependency incompatibilities. -Borut 2009/1/13 Ulrich Stärk u...@spielviel.de Hi all, Tapestry's current documentation is very complete, covering almost everything a developer needs to know to be productive with Tapestry. Unfortunately this documentation is clustered across several locations thus making it hard to find information and very hard for beginners to get going. Sometimes even I am annoyed because I don't find the information I'm looking for at the expected place. There is the official user guide, which is no guide in the actual sense of the word but merely a collection of topics using Tapestry-specific vocabulary as the topics, making it hard for a beginner to get started. Then there is the tutorial that gets you started with Tapestry but doesn't go deep enough to know the name of the topic to look for in the user guide when a problem arises or more information on a subject is needed. Thirdly, there is the wiki that contains numerous
RE: RE: Re: Table and carriage return
I get Unable to read OGNL expression 'parsed OGNL expression' of .. ognl.NoSuchPropertyException Stack Trace: ognl.ObjectPropertyAccessor.getProperty(ObjectPropertyAccessor.java:123) ognl.OgnlRuntime.getProperty(OgnlRuntime.java:1616) ognl.ASTProperty.getValueBody(ASTProperty.java:96) ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:170) ognl.SimpleNode.getValue(SimpleNode.java:210) ognl.ASTChain.getValueBody(ASTChain.java:109) ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:170) ognl.SimpleNode.getValue(SimpleNode.java:210) ognl.Ognl.getValue(Ognl.java:333) ognl.Ognl.getValue(Ognl.java:310) org.apache.tapestry.services.impl.ExpressionEvaluatorImpl.readCompiled(ExpressionEvaluatorImpl.java:91) $ExpressionEvaluator_11ef9a9af22.readCompiled($ExpressionEvaluator_11ef9a9af22.java) org.apache.tapestry.binding.ExpressionBinding.resolveExpression(ExpressionBinding.java:110) org.apache.tapestry.binding.ExpressionBinding.getObject(ExpressionBinding.java:103) org.apache.tapestry.binding.AbstractBinding.getObject(AbstractBinding.java:87) $Insert_6.getValue($Insert_6.java) org.apache.tapestry.components.Insert.renderComponent(Insert.java:42) org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:617) org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:434) org.apache.tapestry.components.BlockRenderer.render(BlockRenderer.java:75) org.apache.tapestry.components.Delegator.renderComponent(Delegator.java:44) org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:617) org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:434) org.apache.tapestry.components.Any.renderComponent(Any.java:48) org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:617) org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:434) org.apache.tapestry.components.ForBean.renderComponent(ForBean.java:137) org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:617) org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:92) org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:617) org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:434) org.apache.tapestry.components.RenderBody.renderComponent(RenderBody.java:44) ** James Sherwood wrote: Hello, What is the exception you are getting? --James -Original Message- From: Cathy_123 [mailto:ndgt...@yahoo.com] Sent: January-21-09 9:40 AM To: users@tapestry.apache.org Subject: [Spam Rating:3.18] RE: [Spam Rating:3.18] Re: Table and carriage return Thank you for this issue, It's OK for the carriage return but I have a little problem again I have to format the value of the column. Instead to do component id=pagesTable type=PagesTable binding name=source value=myDataModel/ binding name=columns value=literal:!column1,!,!column2/ /component I do component id=pagesTable type=PagesTable binding name=source value=myDataModel/ binding name=columns value=literal:!column1,!,=column2Column/ /component because column2 is a List of data. So with the code java, I use ITableColumnEvaluator and read the list and return list.get(0) + br/ +list.get(1) + br/ +list.get(2)... so if I have a insert, I do component id=pagesTable type=PagesTable binding name=source value=myDataModel/ binding name=columns value=literal:!column1,!,!columnFormat/ /component component id=columnFormatColumnValue type=Block/ component id=columnFormat type=Insert binding name=value value=components.pagesTable.tableRow.column2Column/ binding name=raw value=true/ /component But I have an exception because of binding name=value value=components.pagesTable.tableRow.column2Column/ How can I do to format column2 with Insert (format column2 for each line of table) ? thank you for your help Cathy James Sherwood wrote: Hello, I have not used T4 going from T3 to T5 but I assume most of the components are the same. If you are using the standard insert component you can just declare the raw parameter as true so you output is changed in any way: component id=insertText type=Insert binding name=value expression=message/binding static-binding name=rawTRUE/static-binding /component --James -Original Message- From: Cathy_123 [mailto:ndgt...@yahoo.com] Sent: January-21-09 7:30 AM To: users@tapestry.apache.org Subject: [Spam Rating:3.18] Re: Table and carriage return Thank you for your answer, but I use Tapestry 4, are there another solutions or I have to change the version ? It's a project of my company so it's difficult to change ... Thank you for your help cathy Thiago HP wrote: On Wed, Jan 21, 2009 at 8:40 AM, Cathy_123 ndgt...@yahoo.com wrote: I set these values on the java code and I
Re: [T5] improve documentation
In the long-term it is better though if every developer provides an example to the code he has done. This way the community grows and also the number of potential developers...even if new developments and bugfixes take longer. I know many people who have started with Tapestry, but reached a point with no solution and resorted to another framework as they were in a hurry to get it done. So the Tapestry community shrinks as well although new people find the framework and look at itso overall the community forws, but the community could grow a lot quicker if less people would get frustrated by it. For instance I asked a question on the mailing list with no answer so I assume there is no answer? So I have put it on the http://wiki.apache.org/tapestry/WishList - althouth other developers have the same question. If there is no answer or feedback you never know whether there is no solution or whether there is only nobody that knows the solution. This is why I ended up doing the backend in Wicket and the frontend in Tapestry Original-Nachricht Datum: Wed, 21 Jan 2009 16:40:15 +0200 (EET) Von: Peter Stavrinides p.stavrini...@albourne.com An: Tapestry users users@tapestry.apache.org Betreff: Re: [T5] improve documentation Everyone can contribute by writing an improvement Absolutely! Tapestry is community driven with a small team of developers... they have limited time and simply can't do it all. The documentation task should be given to the community and done Wiki style. There are many people answering questions on this list who are not committers, the docs would be vastly improved with their collective input. Cheers Peter - Original Message - From: Ulrich Stärk u...@spielviel.de To: Tapestry users users@tapestry.apache.org Sent: Wednesday, 21 January, 2009 16:24:20 GMT +02:00 Athens, Beirut, Bucharest, Istanbul Subject: Re: [T5] improve documentation I don't think that someone has to be appointed to do it. Everyone can contribute by writing an improvement, opening an issue in JIRA and attaching the improvement to it. As to the book you mentioned, I think the initiative came to a halt again, shortly after it was started. Uli Newham, Cameron schrieb: I think we are all in agreement that the documentation needs a radical overhaul (and lots to be written). The next question is, who is going to do it? A while ago someone proposed a book on T5. A small group from here organised a separate discussion group and went off to work on it (I have no idea how it is going. Does anyone know?) Maybe a similar thing should be done w.r.t this current issue? c. -Original Message- From: Borut Bolčina [mailto:borut.bolc...@gmail.com] Sent: 21 January 2009 08:58 To: Tapestry users Subject: Re: [T5] improve documentation Hi, also a guide/recipes/good practices/tips/chapter for converting JSP applications to Tapestry 5 would be very welcome. At least a paragraph clarifying questions like: Can I have JSPs in my Tapestry 5 application or do I have to have two web applications talking somehow to each other?, How to post a form from JSP to a Tapestry page or vice versa?, ... A guide on clustering. I know this info can be found in many locations on the net, but writing it in Tapestry documentation would imho greatly improve the credibility of the framework for serious web applications. I feel tapestry is missing the scope in the market. It is not advertised in any way, nor as a framework which one can use to quickly make a simple news site, as other frameworks (non java) are better at that (so I hear), nor as a framework which is best for large teams and large applications. Just look at the web page for Zend PHP framework (http://www.zend.com). Which page do you think management like more, zend's or tapestry's? Unfortunately sometimes (too often) the arguments of power outweight the power of arguments and the consequence is, well, We will use the framework which has more flashy homepage!. The community, us, must prove that a simple web application (some forms, administration pages, publishing news, social crap, etc) can be done without having a PhD in Computer Science. Tapestry relies much on convention over configuration paradigm, that is why the documentation must be excelent. Say, for example http://tapestry.apache.org/tapestry5/tapestry-core/ref/org/apache/tapestry5/corelib/components/Form.html. This page is clearly frightening - look at the first paragraph. So many events and none/few of them has a decent explanation/usage scenario/example. IMO all of them should be properly documented or not mentioned at all. The authorization should have a chapter! Tapestry is a very powerful framework and as such the same thing can be done differently, BUT...why should one have to spend days/weeks to implement a
RE: RE: RE: Re: Table and carriage return
Hello, Unfortunately I do not have T4 experience with these components. It cannot find that property so perhaps you have the path wrong. If you send your 3 files to my email I will look at them and see if I can help. --James -Original Message- From: Cathy_123 [mailto:ndgt...@yahoo.com] Sent: January-21-09 10:50 AM To: users@tapestry.apache.org Subject: [Spam Rating:3.18] RE: RE: Re: Table and carriage return I get Unable to read OGNL expression 'parsed OGNL expression' of .. ognl.NoSuchPropertyException Stack Trace: ognl.ObjectPropertyAccessor.getProperty(ObjectPropertyAccessor.java:123) ognl.OgnlRuntime.getProperty(OgnlRuntime.java:1616) ognl.ASTProperty.getValueBody(ASTProperty.java:96) ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:170) ognl.SimpleNode.getValue(SimpleNode.java:210) ognl.ASTChain.getValueBody(ASTChain.java:109) ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:170) ognl.SimpleNode.getValue(SimpleNode.java:210) ognl.Ognl.getValue(Ognl.java:333) ognl.Ognl.getValue(Ognl.java:310) org.apache.tapestry.services.impl.ExpressionEvaluatorImpl.readCompiled(Expre ssionEvaluatorImpl.java:91) $ExpressionEvaluator_11ef9a9af22.readCompiled($ExpressionEvaluator_11ef9a9af 22.java) org.apache.tapestry.binding.ExpressionBinding.resolveExpression(ExpressionBi nding.java:110) org.apache.tapestry.binding.ExpressionBinding.getObject(ExpressionBinding.ja va:103) org.apache.tapestry.binding.AbstractBinding.getObject(AbstractBinding.java:8 7) $Insert_6.getValue($Insert_6.java) org.apache.tapestry.components.Insert.renderComponent(Insert.java:42) org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:617) org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:434) org.apache.tapestry.components.BlockRenderer.render(BlockRenderer.java:75) org.apache.tapestry.components.Delegator.renderComponent(Delegator.java:44) org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:617) org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:434) org.apache.tapestry.components.Any.renderComponent(Any.java:48) org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:617) org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:434) org.apache.tapestry.components.ForBean.renderComponent(ForBean.java:137) org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:617) org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:92) org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:617) org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:434) org.apache.tapestry.components.RenderBody.renderComponent(RenderBody.java:44 ) ** James Sherwood wrote: Hello, What is the exception you are getting? --James -Original Message- From: Cathy_123 [mailto:ndgt...@yahoo.com] Sent: January-21-09 9:40 AM To: users@tapestry.apache.org Subject: [Spam Rating:3.18] RE: [Spam Rating:3.18] Re: Table and carriage return Thank you for this issue, It's OK for the carriage return but I have a little problem again I have to format the value of the column. Instead to do component id=pagesTable type=PagesTable binding name=source value=myDataModel/ binding name=columns value=literal:!column1,!,!column2/ /component I do component id=pagesTable type=PagesTable binding name=source value=myDataModel/ binding name=columns value=literal:!column1,!,=column2Column/ /component because column2 is a List of data. So with the code java, I use ITableColumnEvaluator and read the list and return list.get(0) + br/ +list.get(1) + br/ +list.get(2)... so if I have a insert, I do component id=pagesTable type=PagesTable binding name=source value=myDataModel/ binding name=columns value=literal:!column1,!,!columnFormat/ /component component id=columnFormatColumnValue type=Block/ component id=columnFormat type=Insert binding name=value value=components.pagesTable.tableRow.column2Column/ binding name=raw value=true/ /component But I have an exception because of binding name=value value=components.pagesTable.tableRow.column2Column/ How can I do to format column2 with Insert (format column2 for each line of table) ? thank you for your help Cathy James Sherwood wrote: Hello, I have not used T4 going from T3 to T5 but I assume most of the components are the same. If you are using the standard insert component you can just declare the raw parameter as true so you output is changed in any way: component id=insertText type=Insert binding name=value expression=message/binding static-binding name=rawTRUE/static-binding /component --James -Original Message- From: Cathy_123 [mailto:ndgt...@yahoo.com] Sent: January-21-09 7:30 AM To:
T5: Component Suggestion/Question
Hello, I am trying to create an application that just has a single page basically with many fields about a member. I need this page to be dynamic whereby and admin can change fields without refreshing the page. The T5Component InPlaceEditor sort of works however there is no validation and it is a one way connection meaning if they put invalid data in, there is no way to let them know. Can anyone suggest a component I might use(or point me in the right direction to build one) that basically would allow the admin to make changes to fields on the page without refreshing the page but has validation? Thanks in advance, --James
RE: RE: Re: Table and carriage return
In the case you don't understand my problem, I explain : components.pagesTable.tableRow.column2 exists I have to format the column, so for the TABLE, I writed =column2Column like: component id=pagesTable type=PagesTable binding name=source value=myDataModel/ binding name=columns value=literal:!column1,!,=column2Column/ /component column2Column is a java method who retrieves the components.pagesTable.tableRow.column2 value in the parameter (see ITableColumnEvaluator ) Now for the component INSERT, how can I do to format it thank you Cathy Cathy_123 wrote: I get Unable to read OGNL expression 'parsed OGNL expression' of .. ognl.NoSuchPropertyException Stack Trace: ognl.ObjectPropertyAccessor.getProperty(ObjectPropertyAccessor.java:123) ognl.OgnlRuntime.getProperty(OgnlRuntime.java:1616) ognl.ASTProperty.getValueBody(ASTProperty.java:96) ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:170) ognl.SimpleNode.getValue(SimpleNode.java:210) ognl.ASTChain.getValueBody(ASTChain.java:109) ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:170) ognl.SimpleNode.getValue(SimpleNode.java:210) ognl.Ognl.getValue(Ognl.java:333) ognl.Ognl.getValue(Ognl.java:310) org.apache.tapestry.services.impl.ExpressionEvaluatorImpl.readCompiled(ExpressionEvaluatorImpl.java:91) $ExpressionEvaluator_11ef9a9af22.readCompiled($ExpressionEvaluator_11ef9a9af22.java) org.apache.tapestry.binding.ExpressionBinding.resolveExpression(ExpressionBinding.java:110) org.apache.tapestry.binding.ExpressionBinding.getObject(ExpressionBinding.java:103) org.apache.tapestry.binding.AbstractBinding.getObject(AbstractBinding.java:87) $Insert_6.getValue($Insert_6.java) org.apache.tapestry.components.Insert.renderComponent(Insert.java:42) org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:617) org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:434) org.apache.tapestry.components.BlockRenderer.render(BlockRenderer.java:75) org.apache.tapestry.components.Delegator.renderComponent(Delegator.java:44) org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:617) org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:434) org.apache.tapestry.components.Any.renderComponent(Any.java:48) org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:617) org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:434) org.apache.tapestry.components.ForBean.renderComponent(ForBean.java:137) org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:617) org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:92) org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:617) org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:434) org.apache.tapestry.components.RenderBody.renderComponent(RenderBody.java:44) ** James Sherwood wrote: Hello, What is the exception you are getting? --James -Original Message- From: Cathy_123 [mailto:ndgt...@yahoo.com] Sent: January-21-09 9:40 AM To: users@tapestry.apache.org Subject: [Spam Rating:3.18] RE: [Spam Rating:3.18] Re: Table and carriage return Thank you for this issue, It's OK for the carriage return but I have a little problem again I have to format the value of the column. Instead to do component id=pagesTable type=PagesTable binding name=source value=myDataModel/ binding name=columns value=literal:!column1,!,!column2/ /component I do component id=pagesTable type=PagesTable binding name=source value=myDataModel/ binding name=columns value=literal:!column1,!,=column2Column/ /component because column2 is a List of data. So with the code java, I use ITableColumnEvaluator and read the list and return list.get(0) + br/ +list.get(1) + br/ +list.get(2)... so if I have a insert, I do component id=pagesTable type=PagesTable binding name=source value=myDataModel/ binding name=columns value=literal:!column1,!,!columnFormat/ /component component id=columnFormatColumnValue type=Block/ component id=columnFormat type=Insert binding name=value value=components.pagesTable.tableRow.column2Column/ binding name=raw value=true/ /component But I have an exception because of binding name=value value=components.pagesTable.tableRow.column2Column/ How can I do to format column2 with Insert (format column2 for each line of table) ? thank you for your help Cathy James Sherwood wrote: Hello, I have not used T4 going from T3 to T5 but I assume most of the components are the same. If you are using the standard insert component you can just declare the raw parameter as true so you output is changed in any way: component id=insertText type=Insert binding name=value
RE: RE: Re: Table and carriage return
Hello, Reading your last post I think your problem is this: component id=columnFormatColumnValue type=Block/ component id=columnFormat type=Insert binding name=value value=components.pagesTable.tableRow.column2Column/ binding name=raw value=true/ /component Should be: component id=columnFormatColumnValue type=Block/ component id=columnFormat type=Insert binding name=value value=column2Column/ binding name=raw value=true/ /component Because components.pagesTable.tableRow.column2Column doesn't exist, components.pagesTable.tableRow.column2 does. And column2Column is just a java method that returns components.pagesTable.tableRow.column2's list formatted(if I follow what you say correctly) --James -Original Message- From: Cathy_123 [mailto:ndgt...@yahoo.com] Sent: January-21-09 9:40 AM To: users@tapestry.apache.org Subject: [Spam Rating:3.18] RE: [Spam Rating:3.18] Re: Table and carriage return Thank you for this issue, It's OK for the carriage return but I have a little problem again I have to format the value of the column. Instead to do component id=pagesTable type=PagesTable binding name=source value=myDataModel/ binding name=columns value=literal:!column1,!,!column2/ /component I do component id=pagesTable type=PagesTable binding name=source value=myDataModel/ binding name=columns value=literal:!column1,!,=column2Column/ /component because column2 is a List of data. So with the code java, I use ITableColumnEvaluator and read the list and return list.get(0) + br/ +list.get(1) + br/ +list.get(2)... so if I have a insert, I do component id=pagesTable type=PagesTable binding name=source value=myDataModel/ binding name=columns value=literal:!column1,!,!columnFormat/ /component component id=columnFormatColumnValue type=Block/ component id=columnFormat type=Insert binding name=value value=components.pagesTable.tableRow.column2Column/ binding name=raw value=true/ /component But I have an exception because of binding name=value value=components.pagesTable.tableRow.column2Column/ How can I do to format column2 with Insert (format column2 for each line of table) ? thank you for your help Cathy James Sherwood wrote: Hello, I have not used T4 going from T3 to T5 but I assume most of the components are the same. If you are using the standard insert component you can just declare the raw parameter as true so you output is changed in any way: component id=insertText type=Insert binding name=value expression=message/binding static-binding name=rawTRUE/static-binding /component --James -Original Message- From: Cathy_123 [mailto:ndgt...@yahoo.com] Sent: January-21-09 7:30 AM To: users@tapestry.apache.org Subject: [Spam Rating:3.18] Re: Table and carriage return Thank you for your answer, but I use Tapestry 4, are there another solutions or I have to change the version ? It's a project of my company so it's difficult to change ... Thank you for your help cathy Thiago HP wrote: On Wed, Jan 21, 2009 at 8:40 AM, Cathy_123 ndgt...@yahoo.com wrote: I set these values on the java code and I try to add ' \n\r' or '\r\n' or 'br' on the string but tapestry doesn't understand this carracters. Do you know how to do it ? HTML completely ignores newline (\n, \r) characters unless they're surrounded by a pre tag. By the way, Tapestry templates *must* be valid XML, so you should use br/ in your templates, not br. By default, Tapestry converts the character in lt;, in gt; , etc. The OutputRaw component (http://tapestry.apache.org/tapestry5/tapestry-core/ref/org/apache/tapestry5 /corelib/components/OutputRaw.html) does not do this conversion, so it can be a solution to your problem. And I would like that the table doesn't add automatically the carriage return when my string is too long like too. This is a pure HTML question, not Tapestry related. And I don't know the answer . . . Maybe you can try the pre tag. -- Thiago - 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://www.nabble.com/Table-and-carriage-return-tp21580648p21581350.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 - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org -- View this message in context:
Re: [T5] improve documentation
I know many people who have started with Tapestry, but reached a point with no solution and resorted to another framework I reached that point when it was announced that T5 would not be backward compatible with T4... at that point I had invested a couple of years in Tapestry, and was maintaining and actively developing a number of production apps so was caught in a conundrum... to cut a long story though, the ONLY reason back then that I stuck with Tapestry was because of Howards screencasts, Tapestry 5 just seemed awesome in those screencasts and sold it to me so I gave it a try and got hooked, I guess nothing is more powerful than a visual tutorial. It saves time, saves frustration and walks you through best practices so you do it the right way first time round... its a real pity they are not being pushed more! Peter - Original Message - From: Tobias Marx superoverdr...@gmx.de To: users@tapestry.apache.org Sent: Wednesday, 21 January, 2009 17:03:04 GMT +02:00 Athens, Beirut, Bucharest, Istanbul Subject: Re: [T5] improve documentation In the long-term it is better though if every developer provides an example to the code he has done. This way the community grows and also the number of potential developers...even if new developments and bugfixes take longer. I know many people who have started with Tapestry, but reached a point with no solution and resorted to another framework as they were in a hurry to get it done. So the Tapestry community shrinks as well although new people find the framework and look at itso overall the community forws, but the community could grow a lot quicker if less people would get frustrated by it. For instance I asked a question on the mailing list with no answer so I assume there is no answer? So I have put it on the http://wiki.apache.org/tapestry/WishList - althouth other developers have the same question. If there is no answer or feedback you never know whether there is no solution or whether there is only nobody that knows the solution. This is why I ended up doing the backend in Wicket and the frontend in Tapestry Original-Nachricht Datum: Wed, 21 Jan 2009 16:40:15 +0200 (EET) Von: Peter Stavrinides p.stavrini...@albourne.com An: Tapestry users users@tapestry.apache.org Betreff: Re: [T5] improve documentation Everyone can contribute by writing an improvement Absolutely! Tapestry is community driven with a small team of developers... they have limited time and simply can't do it all. The documentation task should be given to the community and done Wiki style. There are many people answering questions on this list who are not committers, the docs would be vastly improved with their collective input. Cheers Peter - Original Message - From: Ulrich Stärk u...@spielviel.de To: Tapestry users users@tapestry.apache.org Sent: Wednesday, 21 January, 2009 16:24:20 GMT +02:00 Athens, Beirut, Bucharest, Istanbul Subject: Re: [T5] improve documentation I don't think that someone has to be appointed to do it. Everyone can contribute by writing an improvement, opening an issue in JIRA and attaching the improvement to it. As to the book you mentioned, I think the initiative came to a halt again, shortly after it was started. Uli Newham, Cameron schrieb: I think we are all in agreement that the documentation needs a radical overhaul (and lots to be written). The next question is, who is going to do it? A while ago someone proposed a book on T5. A small group from here organised a separate discussion group and went off to work on it (I have no idea how it is going. Does anyone know?) Maybe a similar thing should be done w.r.t this current issue? c. -Original Message- From: Borut Bolčina [mailto:borut.bolc...@gmail.com] Sent: 21 January 2009 08:58 To: Tapestry users Subject: Re: [T5] improve documentation Hi, also a guide/recipes/good practices/tips/chapter for converting JSP applications to Tapestry 5 would be very welcome. At least a paragraph clarifying questions like: Can I have JSPs in my Tapestry 5 application or do I have to have two web applications talking somehow to each other?, How to post a form from JSP to a Tapestry page or vice versa?, ... A guide on clustering. I know this info can be found in many locations on the net, but writing it in Tapestry documentation would imho greatly improve the credibility of the framework for serious web applications. I feel tapestry is missing the scope in the market. It is not advertised in any way, nor as a framework which one can use to quickly make a simple news site, as other frameworks (non java) are better at that (so I hear), nor as a framework which is best for large teams and large applications. Just look at the web page for Zend PHP framework (http://www.zend.com). Which page do you think management like more,
Re: [T5] improve documentation
Yes, but Screencasts only show you easy examples you can do those do what you see in those screencasts and it works wonderfullybut then you want to move on and change something, e.g. additional columns in a table or depending on user roles, locales depending on the domain, you want to change the look of certain components, you might want to change URLs when sorting a table to be stateless and SEO-friendly.and there is an endless number of things people want to do and modify those simply examples. Then it get's messy and you are stuck because you won't find any documentation on this or some essential questions are not answers. Ok, many of those examples from before are documented somewhere...but others aren't. If you ask on the mailing list, you sometimes get an answers of the core developers who know it - but there is often only 2 or 3 people on this planet how know how to do it and they have never documented it as they expect all users to go through the source code - but going through the source code of a big framework is not the reason why people want to use frameworks. They want to use frameworks to not bother about the details, they just want to save time by using a framework that helps to solve problems faster and expect it to work in a nice and simple way - otherwise you might just do it yourself or with a different technology/framework/language that is either documented in a better way or easier to use. It is nice to do things in 5 minutes instead of 1 hour - but if you end up going through the source code in 8 hours to find out who to do something in 5 minutes, doing it the old fasioned way in 1 hour is sometimes quicker. Original-Nachricht Datum: Wed, 21 Jan 2009 17:58:52 +0200 (EET) Von: Peter Stavrinides p.stavrini...@albourne.com An: Tapestry users users@tapestry.apache.org Betreff: Re: [T5] improve documentation I know many people who have started with Tapestry, but reached a point with no solution and resorted to another framework I reached that point when it was announced that T5 would not be backward compatible with T4... at that point I had invested a couple of years in Tapestry, and was maintaining and actively developing a number of production apps so was caught in a conundrum... to cut a long story though, the ONLY reason back then that I stuck with Tapestry was because of Howards screencasts, Tapestry 5 just seemed awesome in those screencasts and sold it to me so I gave it a try and got hooked, I guess nothing is more powerful than a visual tutorial. It saves time, saves frustration and walks you through best practices so you do it the right way first time round... its a real pity they are not being pushed more! Peter - Original Message - From: Tobias Marx superoverdr...@gmx.de To: users@tapestry.apache.org Sent: Wednesday, 21 January, 2009 17:03:04 GMT +02:00 Athens, Beirut, Bucharest, Istanbul Subject: Re: [T5] improve documentation In the long-term it is better though if every developer provides an example to the code he has done. This way the community grows and also the number of potential developers...even if new developments and bugfixes take longer. I know many people who have started with Tapestry, but reached a point with no solution and resorted to another framework as they were in a hurry to get it done. So the Tapestry community shrinks as well although new people find the framework and look at itso overall the community forws, but the community could grow a lot quicker if less people would get frustrated by it. For instance I asked a question on the mailing list with no answer so I assume there is no answer? So I have put it on the http://wiki.apache.org/tapestry/WishList - althouth other developers have the same question. If there is no answer or feedback you never know whether there is no solution or whether there is only nobody that knows the solution. This is why I ended up doing the backend in Wicket and the frontend in Tapestry Original-Nachricht Datum: Wed, 21 Jan 2009 16:40:15 +0200 (EET) Von: Peter Stavrinides p.stavrini...@albourne.com An: Tapestry users users@tapestry.apache.org Betreff: Re: [T5] improve documentation Everyone can contribute by writing an improvement Absolutely! Tapestry is community driven with a small team of developers... they have limited time and simply can't do it all. The documentation task should be given to the community and done Wiki style. There are many people answering questions on this list who are not committers, the docs would be vastly improved with their collective input. Cheers Peter - Original Message - From: Ulrich Stärk u...@spielviel.de To: Tapestry users users@tapestry.apache.org Sent: Wednesday, 21 January, 2009 16:24:20 GMT +02:00 Athens, Beirut, Bucharest, Istanbul Subject: Re: [T5] improve
RE: RE: Re: Table and carriage return
it's not ok with this solution But finally I format all data before sending to Tapestry. So it's ok now. For the problem adding automatically the carriage return I use white-space: nowrap; Thank you a lot for your help Have a nice day Cathy James Sherwood wrote: Hello, Reading your last post I think your problem is this: component id=columnFormatColumnValue type=Block/ component id=columnFormat type=Insert binding name=value value=components.pagesTable.tableRow.column2Column/ binding name=raw value=true/ /component Should be: component id=columnFormatColumnValue type=Block/ component id=columnFormat type=Insert binding name=value value=column2Column/ binding name=raw value=true/ /component Because components.pagesTable.tableRow.column2Column doesn't exist, components.pagesTable.tableRow.column2 does. And column2Column is just a java method that returns components.pagesTable.tableRow.column2's list formatted(if I follow what you say correctly) --James -Original Message- From: Cathy_123 [mailto:ndgt...@yahoo.com] Sent: January-21-09 9:40 AM To: users@tapestry.apache.org Subject: [Spam Rating:3.18] RE: [Spam Rating:3.18] Re: Table and carriage return Thank you for this issue, It's OK for the carriage return but I have a little problem again I have to format the value of the column. Instead to do component id=pagesTable type=PagesTable binding name=source value=myDataModel/ binding name=columns value=literal:!column1,!,!column2/ /component I do component id=pagesTable type=PagesTable binding name=source value=myDataModel/ binding name=columns value=literal:!column1,!,=column2Column/ /component because column2 is a List of data. So with the code java, I use ITableColumnEvaluator and read the list and return list.get(0) + br/ +list.get(1) + br/ +list.get(2)... so if I have a insert, I do component id=pagesTable type=PagesTable binding name=source value=myDataModel/ binding name=columns value=literal:!column1,!,!columnFormat/ /component component id=columnFormatColumnValue type=Block/ component id=columnFormat type=Insert binding name=value value=components.pagesTable.tableRow.column2Column/ binding name=raw value=true/ /component But I have an exception because of binding name=value value=components.pagesTable.tableRow.column2Column/ How can I do to format column2 with Insert (format column2 for each line of table) ? thank you for your help Cathy James Sherwood wrote: Hello, I have not used T4 going from T3 to T5 but I assume most of the components are the same. If you are using the standard insert component you can just declare the raw parameter as true so you output is changed in any way: component id=insertText type=Insert binding name=value expression=message/binding static-binding name=rawTRUE/static-binding /component --James -Original Message- From: Cathy_123 [mailto:ndgt...@yahoo.com] Sent: January-21-09 7:30 AM To: users@tapestry.apache.org Subject: [Spam Rating:3.18] Re: Table and carriage return Thank you for your answer, but I use Tapestry 4, are there another solutions or I have to change the version ? It's a project of my company so it's difficult to change ... Thank you for your help cathy Thiago HP wrote: On Wed, Jan 21, 2009 at 8:40 AM, Cathy_123 ndgt...@yahoo.com wrote: I set these values on the java code and I try to add ' \n\r' or '\r\n' or 'br' on the string but tapestry doesn't understand this carracters. Do you know how to do it ? HTML completely ignores newline (\n, \r) characters unless they're surrounded by a pre tag. By the way, Tapestry templates *must* be valid XML, so you should use br/ in your templates, not br. By default, Tapestry converts the character in lt;, in gt; , etc. The OutputRaw component (http://tapestry.apache.org/tapestry5/tapestry-core/ref/org/apache/tapestry5 /corelib/components/OutputRaw.html) does not do this conversion, so it can be a solution to your problem. And I would like that the table doesn't add automatically the carriage return when my string is too long like too. This is a pure HTML question, not Tapestry related. And I don't know the answer . . . Maybe you can try the pre tag. -- Thiago - 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://www.nabble.com/Table-and-carriage-return-tp21580648p21581350.html Sent from the Tapestry - User mailing list archive at Nabble.com. - To
Re: Doubts in Tapestry
Em Wed, 21 Jan 2009 10:59:41 -0300, Sid Ferreira sid@gmail.com escreveu: 1) Create a MyContextService, wich has an ApplicationState object Tapestry-IoC services cannot use the @ApplicationState annotation. If they need to access ASOs, they need to use the ApplicationStateManager. 2) Create a @Private annotation (Dispatcher docs, but not clear how to finish it) It can be any annotation you fancy. @Private was just the name the wiki article author chose. 3) Create 2 pages, one to login and another to list, wich extends MyContextService Pages can't be services, but they can use them (through @Inject). 4) Create a dispatcher, wich extends MyContextService The dispatcher would use your service, not extend it. the idea: 1) Dispatcher is called, identify the client and set/reset it 2) If user is logged (didn't decided this part yet) it validates the Client - User relation 3) If not logged, check if has a submit and try to login 4) If now the user is not logged, forward in server side to the login 5) Dispatcher forward to list It seems ok. So, the questions: 1) How to finish up the @Private? ( http://wiki.apache.org/tapestry/Tapestry5HowToControlAccess) I dunno what to ser in the type for instance This annotation is just a marker. Annotations can't have code nor logic. Reading your 1 week of Tapestry message, I got the impression that you're not familiar with Java yet. Therefore, I strongly suggest you to really understand Java before learning Tapestry. You must really understand OOP and Java to use Tapestry really well. 2) How to server-side forward? RTFM! (hehehe, sorry, I coundn't resist) http://tapestry.apache.org/tapestry5/guide/pagenav.html. 3) Using ASO (or AOS?) in a super class, isn't the same (and so useless to do) to have a protected static property in MyContextService? ASOs must be private fields, but you can write a protected getter. ;) A static property in a service would be just one variable for the whole application. As you need separate state (session) for each user, it must be an ASO. -- Thiago H. de Paula Figueiredo Independent Java consultant, developer, and instructor http://www.arsmachina.com.br/thiago - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: [T5] improve documentation
Em Wed, 21 Jan 2009 12:03:04 -0300, Tobias Marx superoverdr...@gmx.de escreveu: I know many people who have started with Tapestry, but reached a point with no solution and resorted to another framework as they were in a hurry to get it done. Did these people post their questions in the mailing list? Once I posted one (about Run Jetty Run) and got a response (and a very good one) in 9 minutes! For instance I asked a question on the mailing list with no answer so I assume there is no answer? Be sure it is well written. Sometimes there are some messages so badly written or so vague that people just don't take the time to even understand them. This is why I ended up doing the backend in Wicket and the frontend in Tapestry !?!?!? Being Wicket and Tapestry front-end frameworks (web ones), how could you write the backend in Wicket? -- Thiago H. de Paula Figueiredo Independent Java consultant, developer, and instructor http://www.arsmachina.com.br/thiago - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: [T5] improve documentation
Em Wed, 21 Jan 2009 13:15:11 -0300, Tobias Marx superoverdr...@gmx.de escreveu: Yes, but Screencasts only show you easy examples you can do those do what you see in those screencasts and it works wonderfullybut then you want to move on and change something, e.g. additional columns in a table or depending on user roles, locales depending on the domain, you want to change the look of certain components, you might want to change URLs when sorting a table to be stateless and SEO-friendly.and there is an endless number of things people want to do and modify those simply examples. That's what a cookbook is good for. Howard started one in the Tapestry page. we all could add more examples to the wiki, so Howard or any other Tapestry committer could review and add them to the page. ;) -- Thiago H. de Paula Figueiredo Independent Java consultant, developer, and instructor http://www.arsmachina.com.br/thiago - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
RE: T5: Component Suggestion/Question
Thanks a bunch, I was actually looking at the screen cast on Ajax and Zones as I suspected this would be accomplished with zones. Ideally what I would like to do is create this but have it just output the value with a small edit button and a hidden text field. When you click the edit button it shows the text field and then submits the form much like the T5Component InPlaceEditor but this would allow validation if the hide/show part does not mess that up. I believe it's possible but to turn it into a component may be really tricky. --James -Original Message- From: Thiago H. de Paula Figueiredo [mailto:thiag...@gmail.com] Sent: January-21-09 1:49 PM To: Tapestry users Subject: Re: T5: Component Suggestion/Question Em Wed, 21 Jan 2009 12:20:33 -0300, James Sherwood jsherw...@rgisolutions.com escreveu: I need this page to be dynamic whereby and admin can change fields without refreshing the page. Not refreshing a page = AJAX! Put your Form inside a Zone and submit the form through AJAX. Something like: div t:type=Zone t:id=zone form t:type=form t:zone=zone t:id=form div t:type=Errors/ .. your fields here. /form /div @InjectComponent private Zone zone; @OnEvent(value = EventConstants.VALIDATE_FORM, component=form public Object validate() { if (form has validation errors) { return zone; } else { return null; // let the form submission process continue } } @OnEvent(value = EventConstants.SUCCESS, component=form public Object sucess() { // do whatever you want return zone; } -- Thiago H. de Paula Figueiredo Independent Java consultant, developer, and instructor http://www.arsmachina.com.br/thiago - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: T5: Component Suggestion/Question
Em Wed, 21 Jan 2009 14:08:09 -0300, James Sherwood jsherw...@rgisolutions.com escreveu: Thanks a bunch, :) I was actually looking at the screen cast on Ajax and Zones as I suspected this would be accomplished with zones. You can do a lot with them. Just be creative. :) Ideally what I would like to do is create this but have it just output the value with a small edit button and a hidden text field. It looks like the FormFragment does at least partly what you want. Its documentation has a good example. When you click the edit button it shows the text field and then submits the form much like the T5Component InPlaceEditor but this would allow validation if the hide/show part does not mess that up. How does it mess up? I use submit forms with AJAX all the time and the validation messages never got messed up. -- Thiago H. de Paula Figueiredo Independent Java consultant, developer, and instructor http://www.arsmachina.com.br/thiago - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
T5: HiddenField?
So.. Is there really ho HiddenField component for Tapestry 5? Is this just a minor oversight, or is there a different way to add values to be passed through form? - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Using javascript onsubmit event on a Tapestry form
I'd like to execute some javascript on form submit but it seems that Tapestry is setting the onsubmit event of the form for performing client side validation so whatever i place on the onsubmit attribute gets ignored. Any idea how i can execute some javascript on submit right after the Tapestry stuff gets executed ? Thanks.
Re: Using javascript onsubmit event on a Tapestry form
Have you tried prototype Event.observe() function? For instance you could use something like this: Event.observe(formId, 'submit', function() { // your onsubmit actions }); I'm not sure if this is the best way to do this, but it could work. On Wed, Jan 21, 2009 at 5:45 PM, Hugo Palma hugo.m.pa...@gmail.com wrote: I'd like to execute some javascript on form submit but it seems that Tapestry is setting the onsubmit event of the form for performing client side validation so whatever i place on the onsubmit attribute gets ignored. Any idea how i can execute some javascript on submit right after the Tapestry stuff gets executed ? Thanks.
ClassWorker for Services
Hello, Is it possible to use a ComponentClassTransformWorker approach also for services? Kristjan Kelt -- View this message in context: http://www.nabble.com/ClassWorker-for-Services-tp21588669p21588669.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
Adding onclick to row in Grid component
Hi, I have a grid, and I want the user to be able to click on a row to select it. I know I can add a link to each cell, but that's not very nice, as the link only works if you click on text, and there could be plenty of whitespace in the row. I see there is a GridRows component, which is part of each Grid, but the documentation on the GridRows component has no example. From memory of Tap3, I seem to remember building up a table using underlying components. Do I need to that here too? Thanks, Jonathan - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
RE: T5: Component Suggestion/Question
Hello, I have it created but I have a few questions(code is below): 1: I am using a checkbox for the modify feature but I would like to have an image or text at the very least, is this possible?(I couldn't find a base component to satisfy this) 2:I don't like the big red ugliness of the built in form error on submit so I will just create another variable in the form fragment I fill(or look at adjusting the css of that error reporting) but is it possible to mimic or link to the validation bubble that happens on the client side? div t:type=Zone t:id=zone form t:type=form t:zone=zone t:id=form div t:type=Errors/ ${firstName} t:checkbox t:id=modifyFirstName t:mixins=triggerfragment fragment=firstNameModify/ t:formfragment t:id=firstNameModify visible=modifyFirstName input t:type=TextField t:id=firstName t:validate=required/ input type=submit value=Login/ /t:formfragment /form /div @InjectComponent private Zone zone; @Property private String _firstName = Fname; @Property private boolean _modifyFirstName; @Component(id = firstName) private TextField _firstnameField; @Component(id = form) private Form _form; @OnEvent(value = EventConstants.VALIDATE_FORM, component=form) public Object validate() { if (_firstName == null ||_firstName.trim().equals()) { //validation errors _form.recordError(must have a fname); return zone; } else { return null; // let the form submission process continue } } @OnEvent(value = EventConstants.SUCCESS, component=form) public Object sucess() { // do whatever you want _modifyFirstName = false; return zone; } Thanks, James -Original Message- From: Thiago H. de Paula Figueiredo [mailto:thiag...@gmail.com] Sent: January-21-09 2:25 PM To: Tapestry users Subject: Re: T5: Component Suggestion/Question Em Wed, 21 Jan 2009 14:08:09 -0300, James Sherwood jsherw...@rgisolutions.com escreveu: Thanks a bunch, :) I was actually looking at the screen cast on Ajax and Zones as I suspected this would be accomplished with zones. You can do a lot with them. Just be creative. :) Ideally what I would like to do is create this but have it just output the value with a small edit button and a hidden text field. It looks like the FormFragment does at least partly what you want. Its documentation has a good example. When you click the edit button it shows the text field and then submits the form much like the T5Component InPlaceEditor but this would allow validation if the hide/show part does not mess that up. How does it mess up? I use submit forms with AJAX all the time and the validation messages never got messed up. -- Thiago H. de Paula Figueiredo Independent Java consultant, developer, and instructor http://www.arsmachina.com.br/thiago - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: [T5] improve documentation
Be sure it is well written. Sometimes there are some messages so badly written or so vague that people just don't take the time to even understand them. I think this should be clearly written: http://wiki.apache.org/tapestry/WishList?highlight=(wishlist) I have put it on the Wish List are there does not seem to be a solution yet? This is why I ended up doing the backend in Wicket and the frontend in Tapestry !?!?!? Being Wicket and Tapestry front-end frameworks (web ones), how could you write the backend in Wicket? Backend = the admin interface to configure the front-end...e.g. define the fields that exist, what form fields should be displayed. This was easy to do in Wicket but is hard /impossible(?) in Tapestry - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: Using javascript onsubmit event on a Tapestry form
Thanks, that worked just fine. I was looking for more complicated solutions and overlooked the simple. On Wed, Jan 21, 2009 at 5:57 PM, Lubor Gajda lubor.ga...@gmail.com wrote: Have you tried prototype Event.observe() function? For instance you could use something like this: Event.observe(formId, 'submit', function() { // your onsubmit actions }); I'm not sure if this is the best way to do this, but it could work. On Wed, Jan 21, 2009 at 5:45 PM, Hugo Palma hugo.m.pa...@gmail.com wrote: I'd like to execute some javascript on form submit but it seems that Tapestry is setting the onsubmit event of the form for performing client side validation so whatever i place on the onsubmit attribute gets ignored. Any idea how i can execute some javascript on submit right after the Tapestry stuff gets executed ? Thanks.
Re: [T5] improve documentation
superoverdr...@gmx.de wrote: I have put it on the Wish List are there does not seem to be a solution yet? It's not actually evident what you added to that page, given superoverdrive Toby. For others' reference, your addition is: http://wiki.apache.org/tapestry/WishList?action=diffrev2=98rev1=94 I think what you ask is feasible: it's not that different from what is done by BeanEditForm, just the source of the field list is not determined by reflection but loaded from an external source. I agree it would be a nice addition to T5, but it has not been done yet. The point is: you are asking for a new feature (and a large one, I 'd say), so you cannot expect a simple answer on the mailing list. Look at JIRA improvement issues, to find out whether this has already been requested by someone else. If not, submit a new Issue, describing with the greatest detail how the new feature should work. Then you can ask the mailing list to vote for your issue, and ask the developers to consider it. Or if you feel brave enough, write it yourself and submit it for inclusion. That's how things are done in OS projects... Angelo. - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Weird error
Based on http://wiki.apache.org/tapestry/Tapestry5HowToControlAccess Im getting this error... Why? java.lang.RuntimeExceptionException constructing service 'MasterDispatcher': Error invoking service builder method org.apache.tapestry5.services.TapestryModule.buildMasterDispatcher(List) (at TapestryModule.java:1144) (for service 'MasterDispatcher'): Error invoking service contribution method tibox.allert.fastSupport.services.AppModule.contributeMasterDispatcher(OrderedConfiguration, Dispatcher): Error building service proxy for service 'AccessController' (at tibox.allert.fastSupport.services.AccessController(ApplicationStateManager, ComponentClassResolver, ComponentSource, UserSessionImpl) (at AccessController.java:26) via tibox.allert.fastSupport.services.AppModule.bind(ServiceBinder) (at AppModule.java:27)): Error invoking constructor tibox.allert.fastSupport.services.AccessController(ApplicationStateManager, ComponentClassResolver, ComponentSource, UserSessionImpl) (at AccessController.java:26) via tibox.allert.fastSupport.services.AppModule.bind(ServiceBinder) (at AppModule.java:27) (for service 'AccessController'): No service implements the interface tibox.allert.fastSupport.services.UserSessionImpl. org.apache.tapestry5.ioc.internal.OperationExceptionNo service implements the interface tibox.allert.fastSupport.services.UserSessionImpl. trace - Realizing service MasterDispatcher - Invoking org.apache.tapestry5.services.TapestryModule.buildMasterDispatcher(List) (at TapestryModule.java:1144) - Collecting ordered configuration for service MasterDispatcher - Invoking method tibox.allert.fastSupport.services.AppModule.contributeMasterDispatcher(OrderedConfiguration, Dispatcher) (at AppModule.java:39). - Determining injection value for parameter #2 (org.apache.tapestry5.services.Dispatcher) - Creating service 'AccessController'. - Determining injection value for parameter #4 (tibox.allert.fastSupport.services.UserSessionImpl) java.lang.RuntimeExceptionNo service implements the interface tibox.allert.fastSupport.services.UserSessionImpl. -- Sidney G B Ferreira Desenvolvedor Web - Tibox Innovations
Re: Weird error
Hi Could you show us the code of your class tibox.allert.fastSupport.services.UserSessionImpl ? Stephane Sid Ferreira a écrit : Based on http://wiki.apache.org/tapestry/Tapestry5HowToControlAccess Im getting this error... Why? java.lang.RuntimeExceptionException constructing service 'MasterDispatcher': Error invoking service builder method org.apache.tapestry5.services.TapestryModule.buildMasterDispatcher(List) (at TapestryModule.java:1144) (for service 'MasterDispatcher'): Error invoking service contribution method tibox.allert.fastSupport.services.AppModule.contributeMasterDispatcher(OrderedConfiguration, Dispatcher): Error building service proxy for service 'AccessController' (at tibox.allert.fastSupport.services.AccessController(ApplicationStateManager, ComponentClassResolver, ComponentSource, UserSessionImpl) (at AccessController.java:26) via tibox.allert.fastSupport.services.AppModule.bind(ServiceBinder) (at AppModule.java:27)): Error invoking constructor tibox.allert.fastSupport.services.AccessController(ApplicationStateManager, ComponentClassResolver, ComponentSource, UserSessionImpl) (at AccessController.java:26) via tibox.allert.fastSupport.services.AppModule.bind(ServiceBinder) (at AppModule.java:27) (for service 'AccessController'): No service implements the interface tibox.allert.fastSupport.services.UserSessionImpl. org.apache.tapestry5.ioc.internal.OperationExceptionNo service implements the interface tibox.allert.fastSupport.services.UserSessionImpl. trace - Realizing service MasterDispatcher - Invoking org.apache.tapestry5.services.TapestryModule.buildMasterDispatcher(List) (at TapestryModule.java:1144) - Collecting ordered configuration for service MasterDispatcher - Invoking method tibox.allert.fastSupport.services.AppModule.contributeMasterDispatcher(OrderedConfiguration, Dispatcher) (at AppModule.java:39). - Determining injection value for parameter #2 (org.apache.tapestry5.services.Dispatcher) - Creating service 'AccessController'. - Determining injection value for parameter #4 (tibox.allert.fastSupport.services.UserSessionImpl) java.lang.RuntimeExceptionNo service implements the interface tibox.allert.fastSupport.services.UserSessionImpl.
Re: Weird error
And also how exactly you bind your service implementation in your app module. Stephane Decleire wrote: Hi Could you show us the code of your class tibox.allert.fastSupport.services.UserSessionImpl ? Stephane Sid Ferreira a écrit : Based on http://wiki.apache.org/tapestry/Tapestry5HowToControlAccess Im getting this error... Why? java.lang.RuntimeExceptionException constructing service 'MasterDispatcher': Error invoking service builder method org.apache.tapestry5.services.TapestryModule.buildMasterDispatcher(List) (at TapestryModule.java:1144) (for service 'MasterDispatcher'): Error invoking service contribution method tibox.allert.fastSupport.services.AppModule.contributeMasterDispatcher(OrderedConfiguration, Dispatcher): Error building service proxy for service 'AccessController' (at tibox.allert.fastSupport.services.AccessController(ApplicationStateManager, ComponentClassResolver, ComponentSource, UserSessionImpl) (at AccessController.java:26) via tibox.allert.fastSupport.services.AppModule.bind(ServiceBinder) (at AppModule.java:27)): Error invoking constructor tibox.allert.fastSupport.services.AccessController(ApplicationStateManager, ComponentClassResolver, ComponentSource, UserSessionImpl) (at AccessController.java:26) via tibox.allert.fastSupport.services.AppModule.bind(ServiceBinder) (at AppModule.java:27) (for service 'AccessController'): No service implements the interface tibox.allert.fastSupport.services.UserSessionImpl. org.apache.tapestry5.ioc.internal.OperationExceptionNo service implements the interface tibox.allert.fastSupport.services.UserSessionImpl. trace - Realizing service MasterDispatcher - Invoking org.apache.tapestry5.services.TapestryModule.buildMasterDispatcher(List) (at TapestryModule.java:1144) - Collecting ordered configuration for service MasterDispatcher - Invoking method tibox.allert.fastSupport.services.AppModule.contributeMasterDispatcher(OrderedConfiguration, Dispatcher) (at AppModule.java:39). - Determining injection value for parameter #2 (org.apache.tapestry5.services.Dispatcher) - Creating service 'AccessController'. - Determining injection value for parameter #4 (tibox.allert.fastSupport.services.UserSessionImpl) java.lang.RuntimeExceptionNo service implements the interface tibox.allert.fastSupport.services.UserSessionImpl. -- http://thegodcode.net
T5 : validation of radiogroup fields
I don't understand why the radiogroup component doesn't have a validate field like the other form field components ... And what is the prefered way to set a radiogroup field as required ? Stephane
Re: [T5] improve documentation
It is 1:1 the text from the mailing list as far as I remember..just with a formatted table on the Wiki. So you mean it could work by extending BeanEdit Form? Anyway, so I think, considering the time to do this, it was a good decision to use Wicket for this part and T5 for the frontend part...so combining the best of both worldsotherwise it would have taken too long. Maybe I replace this later on by T5 too if this should become a feature of T5 I am not a T5 developer, just a casual T5 user - I can only contribute by making suggestions and pointing out stuff I have noticed... Thanks for your reply For others' reference, your addition is: http://wiki.apache.org/tapestry/WishList?action=diffrev2=98rev1=94 I think what you ask is feasible: it's not that different from what is done by BeanEditForm, just the source of the field list is not determined by reflection but loaded from an external source. I agree it would be a nice addition to T5, but it has not been done yet. The point is: you are asking for a new feature (and a large one, I 'd say), so you cannot expect a simple answer on the mailing list. Look at JIRA improvement issues, to find out whether this has already been requested by someone else. If not, submit a new Issue, describing with the greatest detail how the new feature should work. Then you can ask the mailing list to vote for your issue, and ask the developers to consider it. Or if you feel brave enough, write it yourself and submit it for inclusion. That's how things are done in OS projects... Angelo. - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: Weird error
I'm guessing from this: java.lang.RuntimeException No service implements the interface tibox.allert.fastSupport.services.UserSessionImpl. That you're binding the implementing class instead of the interface class. Carl Chris Lewis wrote: And also how exactly you bind your service implementation in your app module. Stephane Decleire wrote: Hi Could you show us the code of your class tibox.allert.fastSupport.services.UserSessionImpl ? Stephane Sid Ferreira a écrit : Based on http://wiki.apache.org/tapestry/Tapestry5HowToControlAccess Im getting this error... Why? java.lang.RuntimeExceptionException constructing service 'MasterDispatcher': Error invoking service builder method org.apache.tapestry5.services.TapestryModule.buildMasterDispatcher(List) (at TapestryModule.java:1144) (for service 'MasterDispatcher'): Error invoking service contribution method tibox.allert.fastSupport.services.AppModule.contributeMasterDispatcher(OrderedConfiguration, Dispatcher): Error building service proxy for service 'AccessController' (at tibox.allert.fastSupport.services.AccessController(ApplicationStateManager, ComponentClassResolver, ComponentSource, UserSessionImpl) (at AccessController.java:26) via tibox.allert.fastSupport.services.AppModule.bind(ServiceBinder) (at AppModule.java:27)): Error invoking constructor tibox.allert.fastSupport.services.AccessController(ApplicationStateManager, ComponentClassResolver, ComponentSource, UserSessionImpl) (at AccessController.java:26) via tibox.allert.fastSupport.services.AppModule.bind(ServiceBinder) (at AppModule.java:27) (for service 'AccessController'): No service implements the interface tibox.allert.fastSupport.services.UserSessionImpl. org.apache.tapestry5.ioc.internal.OperationExceptionNo service implements the interface tibox.allert.fastSupport.services.UserSessionImpl. trace - Realizing service MasterDispatcher - Invoking org.apache.tapestry5.services.TapestryModule.buildMasterDispatcher(List) (at TapestryModule.java:1144) - Collecting ordered configuration for service MasterDispatcher - Invoking method tibox.allert.fastSupport.services.AppModule.contributeMasterDispatcher(OrderedConfiguration, Dispatcher) (at AppModule.java:39). - Determining injection value for parameter #2 (org.apache.tapestry5.services.Dispatcher) - Creating service 'AccessController'. - Determining injection value for parameter #4 (tibox.allert.fastSupport.services.UserSessionImpl) java.lang.RuntimeExceptionNo service implements the interface tibox.allert.fastSupport.services.UserSessionImpl. - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: T5: Component Suggestion/Question
Em Wed, 21 Jan 2009 15:36:21 -0300, James Sherwood jsherw...@rgisolutions.com escreveu: Hello, Hi! 1: I am using a checkbox for the modify feature but I would like to have an image or text at the very least, is this possible?(I couldn't find a base component to satisfy this) I don't think this would be possible only using the built-in Tapestry component, but I wish I am wrong. :) 2:I don't like the big red ugliness of the built in form error on submit so I will just create another variable in the form fragment I fill(or look at adjusting the css of that error reporting) but is it possible to mimic or link to the validation bubble that happens on the client side? You can add your own CSS overriding the default Errors component styling. This way, you can style the error messages in any way you want. By default, the generated div tag has class=t-error. That's one of the Tapestry strengths: its components have their default style, but you can always override them using ordinary CSS techniques. -- Thiago H. de Paula Figueiredo Independent Java consultant, developer, and instructor http://www.arsmachina.com.br/thiago - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: T5: HiddenField?
Em Wed, 21 Jan 2009 14:43:31 -0300, Fernando Padilla f...@alum.mit.edu escreveu: So.. Is there really ho HiddenField component for Tapestry 5? Is this just a minor oversight, or is there a different way to add values to be passed through form? One option is to use Form's context parameter. AFAIK, it works exactly like the context parameter found in PageLink, ActionLink and EventLink. -- Thiago H. de Paula Figueiredo Independent Java consultant, developer, and instructor http://www.arsmachina.com.br/thiago - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: ClassWorker for Services
Em Wed, 21 Jan 2009 15:01:38 -0300, kristjankelt kristjank...@hotmail.com escreveu: Hello, Hi! Is it possible to use a ComponentClassTransformWorker approach also for services? Wouldn't service decoration (aspect-oriented style) provide what you need? Take a look at http://tapestry.apache.org/tapestry5/tapestry-ioc/decorator.html. It's incredibly easy to do. -- Thiago H. de Paula Figueiredo Independent Java consultant, developer, and instructor http://www.arsmachina.com.br/thiago - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: Weird error
Em Wed, 21 Jan 2009 16:23:45 -0300, Sid Ferreira sid@gmail.com escreveu: Based on http://wiki.apache.org/tapestry/Tapestry5HowToControlAccess Im getting this error... Why? As any error in Java, the first thing to do is to look at the stack trace: No service implements the interface tibox.allert.fastSupport.services.UserSessionImpl. Read the Tapestry-IoC documentation because the problem lies in your T-IoC configuration. Don't forget to read this page: http://tapestry.apache.org/tapestry5/tapestry-ioc/service.html. (Sorry, second RTFM today, hehehe) :) By the way, I think there's an error in this constructor: public AccessController(ApplicationStateManager asm, ComponentClassResolver resolver, ComponentSource componentSource, UserSessionImpl newUserSession) Instead of UserSessionImpl, I think it should be UserSession, the interface declared in that wiki page. -- Thiago H. de Paula Figueiredo Independent Java consultant, developer, and instructor Consultor, desenvolvedor e instrutor em Java http://www.arsmachina.com.br/thiago - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: T5: HiddenField?
.. but yet not really.. Since if I use a form context, then I think I have to then create a special event listener to deal with that context right? onActionFromForm(context)... I just want to add hidden fields, and have the component take care of serializing and deserializing the values appropriately.. thank you :) Thiago H. de Paula Figueiredo wrote: Em Wed, 21 Jan 2009 14:43:31 -0300, Fernando Padilla f...@alum.mit.edu escreveu: So.. Is there really ho HiddenField component for Tapestry 5? Is this just a minor oversight, or is there a different way to add values to be passed through form? One option is to use Form's context parameter. AFAIK, it works exactly like the context parameter found in PageLink, ActionLink and EventLink. - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: [T5] improve documentation
Em Wed, 21 Jan 2009 16:17:29 -0300, Angelo Turetta aturetta+apa...@bestunion.it escreveu: I think what you ask is feasible: it's not that different from what is done by BeanEditForm, just the source of the field list is not determined by reflection but loaded from an external source. I agree it would be a nice addition to T5, but it has not been done yet. It is not just feasible, it's already implemented: use a BeanEditForm or BeanEditor and pass them a BeanModel instance built and configured programatically (i.e. removing or adding properties to the BeanModel based on any logic you want). Maybe nobody commented on the suggestion made in http://wiki.apache.org/tapestry/WishList?action=diffrev2=98rev1=94 and also posted in this list because it was not well written. I just understood that after reading Angelo's message. -- Thiago H. de Paula Figueiredo Independent Java consultant, developer, and instructor http://www.arsmachina.com.br/thiago - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: T5: HiddenField?
Em Wed, 21 Jan 2009 19:47:55 -0300, Fernando Padilla f...@alum.mit.edu escreveu: Since if I use a form context, then I think I have to then create a special event listener to deal with that context right? onActionFromForm(context)... Not right! :) It would be passed to you onSuccess method, AFAIK. I just want to add hidden fields, and have the component take care of serializing and deserializing the values appropriately.. There's the Hidden component in Chenillekit: http://www.chenillekit.org/chenillekit-tapestry/ref/org/chenillekit/tapestry/core/components/Hidden.html. By the way, there are some really nice components there. thank you :) Gracias! -- Thiago H. de Paula Figueiredo Independent Java consultant, developer, and instructor http://www.arsmachina.com.br/thiago - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: T5: HiddenField?
thank you. :) onSuccess would be WAY too late. :) The whole point to have hidden variables is to make sure state is carried through so that we have something to work with.. :) thank you for pointing out Chenillekit, maybe I'll look into it, but we already had to create our own HiddenField, just wondering why it's not there by default in Tapestry.. because I think it's a pretty valid usecase.. :) later 'nando Thiago H. de Paula Figueiredo wrote: Em Wed, 21 Jan 2009 19:47:55 -0300, Fernando Padilla f...@alum.mit.edu escreveu: Since if I use a form context, then I think I have to then create a special event listener to deal with that context right? onActionFromForm(context)... Not right! :) It would be passed to you onSuccess method, AFAIK. I just want to add hidden fields, and have the component take care of serializing and deserializing the values appropriately.. There's the Hidden component in Chenillekit: http://www.chenillekit.org/chenillekit-tapestry/ref/org/chenillekit/tapestry/core/components/Hidden.html. By the way, there are some really nice components there. thank you :) Gracias! - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: T5: HiddenField?
Em Wed, 21 Jan 2009 20:15:01 -0300, Fernando Padilla f...@alum.mit.edu escreveu: thank you. :) Gracias de novo! :) onSuccess would be WAY too late. :) The whole point to have hidden variables is to make sure state is carried through so that we have something to work with.. :) It just happened to me that the client persistence strategy could be used for this kind of scenario. I haven't used that yet, though. thank you for pointing out Chenillekit, maybe I'll look into it, but we already had to create our own HiddenField, just wondering why it's not there by default in Tapestry.. because I think it's a pretty valid usecase.. :) Maybe a JIRA for that. :) -- Thiago H. de Paula Figueiredo Consultor, desenvolvedor e instrutor em Java http://www.arsmachina.com.br/thiago - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: Weird error
Ive copy pasted most of code.UserSession (interface) and UserSessionImpl (class) are almost empty, just the method in the link returning true always. The binding I tried with the binder, before the binding of the application. Thiago: I've readed it and there's no problem, but when a copy-paste fails it's confusing. I'll post the sources in a moment... On Wed, Jan 21, 2009 at 9:45 PM, Thiago H. de Paula Figueiredo thiag...@gmail.com wrote: Em Wed, 21 Jan 2009 16:23:45 -0300, Sid Ferreira sid@gmail.com escreveu: Based on http://wiki.apache.org/tapestry/Tapestry5HowToControlAccess Im getting this error... Why? As any error in Java, the first thing to do is to look at the stack trace: No service implements the interface tibox.allert.fastSupport.services.UserSessionImpl. Read the Tapestry-IoC documentation because the problem lies in your T-IoC configuration. Don't forget to read this page: http://tapestry.apache.org/tapestry5/tapestry-ioc/service.html. (Sorry, second RTFM today, hehehe) :) By the way, I think there's an error in this constructor: public AccessController(ApplicationStateManager asm, ComponentClassResolver resolver, ComponentSource componentSource, UserSessionImpl newUserSession) Instead of UserSessionImpl, I think it should be UserSession, the interface declared in that wiki page. -- Thiago H. de Paula Figueiredo Independent Java consultant, developer, and instructor Consultor, desenvolvedor e instrutor em Java http://www.arsmachina.com.br/thiago - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org -- Sidney G B Ferreira Desenvolvedor Web - Tibox Innovations
Re: [T5] Layout component: resolving unclarities
thanks for the link. looking at this layout injection pattern, i wonder whether a normal template, which references the dynamic site-parts directly wouldn't be even easier (i at least find it more intuitive as using the t:body/ injection). what are the pros/cons for that? Site.tml (style stuff omitted): html xmlns:t=http://tapestry.apache.org/schema/tapestry_5_0_0.xsd; head t:header/ /head body t:navigation/ t:mainContent/ /body /html SergeEby schrieb: Hi, t:body/ is the actual content of your page, and the layout component is just a wrapper. This link would probably help you better understand: http://wiki.apache.org/tapestry/Tapestry5Layoutcomponent -- manuel aldana ald...@gmx.de software-engineering blog: http://www.aldana-online.de - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: T5: HiddenField?
https://issues.apache.org/jira/browse/TAP5-265 On Thu, Jan 22, 2009 at 2:41 AM, Thiago H. de Paula Figueiredo thiag...@gmail.com wrote: Em Wed, 21 Jan 2009 20:15:01 -0300, Fernando Padilla f...@alum.mit.edu escreveu: thank you. :) Gracias de novo! :) onSuccess would be WAY too late. :) The whole point to have hidden variables is to make sure state is carried through so that we have something to work with.. :) It just happened to me that the client persistence strategy could be used for this kind of scenario. I haven't used that yet, though. thank you for pointing out Chenillekit, maybe I'll look into it, but we already had to create our own HiddenField, just wondering why it's not there by default in Tapestry.. because I think it's a pretty valid usecase.. :) Maybe a JIRA for that. :) -- Thiago H. de Paula Figueiredo Consultor, desenvolvedor e instrutor em Java http://www.arsmachina.com.br/thiago - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org -- Andreas Andreou - andy...@apache.org - http://blog.andyhot.gr Tapestry / Tacos developer Open Source / JEE Consulting - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: [T5] Layout component: resolving unclarities
Em Wed, 21 Jan 2009 21:30:42 -0300, manuel aldana ald...@gmx.de escreveu: looking at this layout injection pattern, i wonder whether a normal template, which references the dynamic site-parts directly wouldn't be even easier (i at least find it more intuitive as using the t:body/ injection). what are the pros/cons for that? The Layout pattern is just one ordinary Tapestry custom-made component. The pros are the fact that you can each part in its own class/template pair. The con is that there is no way for a component to know what the main content is, as you named in your template below. Site.tml (style stuff omitted): html xmlns:t=http://tapestry.apache.org/schema/tapestry_5_0_0.xsd; head t:header/ /head body t:navigation/ t:mainContent/ /body /html If t:mainContent means the real content of each page of your application, it should be t:body/. A Layout component (or any other component) has no other way to know what is inside it (its content). -- Thiago H. de Paula Figueiredo Independent Java consultant, developer, and instructor http://www.arsmachina.com.br/thiago - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: [T5] Layout component: resolving unclarities
Thiago H. de Paula Figueiredo schrieb: Em Wed, 21 Jan 2009 21:30:42 -0300, manuel aldana ald...@gmx.de escreveu: looking at this layout injection pattern, i wonder whether a normal template, which references the dynamic site-parts directly wouldn't be even easier (i at least find it more intuitive as using the t:body/ injection). what are the pros/cons for that? The Layout pattern is just one ordinary Tapestry custom-made component. The pros are the fact that you can each part in its own class/template pair. The con is that there is no way for a component to know what the main content is, as you named in your template below. OK, but why does the layout component need to know what the main content is? As in other mail mentioned the only (but major) cons I can see is that making the Layout as the main-entry page is not very flexible and breaks somehow the tapestry page concept. -- manuel aldana ald...@gmx.de software-engineering blog: http://www.aldana-online.de - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: [T5] Layout component: resolving unclarities
Em Wed, 21 Jan 2009 21:46:20 -0300, manuel aldana ald...@gmx.de escreveu: OK, but why does the layout component need to know what the main content is? If it is a layout, yes. Otherwise, it would be an ordinary page. As in other mail mentioned the only (but major) cons I can see is that making the Layout as the main-entry page is not very flexible and breaks somehow the tapestry page concept. When people here talk about a Layout component, we are talking about something described by the Tapestry documentation as A Layout component exists to provide common content across all pages in your application.. A Layout is a component, not a page, at least in the vocabulary used in this mailing list. :) It does not mean that you cannot have more than one Layout (but they should be two different components, each page would use zero or one of them) or parameterized Layout or Layouts. ;) -- Thiago H. de Paula Figueiredo Independent Java consultant, developer, and instructor Consultor, desenvolvedor e instrutor em Java http://www.arsmachina.com.br/thiago - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
RE: T5: Component Suggestion/Question
You are like our own little tapestry tutor, and its MUCH appreciated:) I don't think this would be possible only using the built-in Tapestry component, but I wish I am wrong. :) Before I go looking into the code, would it be possible to build one whereby you just click an image to change hidden/shown of the form fragment? If so would I just start by basing it off the built in checkbox component? Unfortunately the checkbox is such an ugly/clunky implementation of a really awesome little component. Thanks, --James -Original Message- From: Thiago H. de Paula Figueiredo [mailto:thiag...@gmail.com] Sent: January-21-09 7:32 PM To: Tapestry users Subject: Re: T5: Component Suggestion/Question Em Wed, 21 Jan 2009 15:36:21 -0300, James Sherwood jsherw...@rgisolutions.com escreveu: Hello, Hi! 1: I am using a checkbox for the modify feature but I would like to have an image or text at the very least, is this possible?(I couldn't find a base component to satisfy this) I don't think this would be possible only using the built-in Tapestry component, but I wish I am wrong. :) 2:I don't like the big red ugliness of the built in form error on submit so I will just create another variable in the form fragment I fill(or look at adjusting the css of that error reporting) but is it possible to mimic or link to the validation bubble that happens on the client side? You can add your own CSS overriding the default Errors component styling. This way, you can style the error messages in any way you want. By default, the generated div tag has class=t-error. That's one of the Tapestry strengths: its components have their default style, but you can always override them using ordinary CSS techniques. -- Thiago H. de Paula Figueiredo Independent Java consultant, developer, and instructor http://www.arsmachina.com.br/thiago - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: T5: Component Suggestion/Question
Em Wed, 21 Jan 2009 22:01:43 -0300, James Sherwood jsherw...@rgisolutions.com escreveu: You are like our own little tapestry tutor, and its MUCH appreciated:) I'm just a guy who wants to bring sanity and pleasure and elegance (Tapestry 5!) to the Java Web development world . . . :) And a guy with a little too much free time in his hands, as I'm currenty working part-time in a project with a local company and the rest of the time in my own projects. All them implemented in Tapestry and the Ars Machina Project packages (www.arsmachina.com.br/project) . . . Before I go looking into the code, would it be possible to build one whereby you just click an image to change hidden/shown of the form fragment? I think so: it would be a matter of writing/generating Javascript code handling the click event of an image/link/whatever and showing/hiding the form fragment. It shouldn't be hard. If so would I just start by basing it off the built in checkbox component? I think you will find the answers you want in the TriggerFragment component (http://tapestry.apache.org/tapestry5/tapestry-core/ref/org/apache/tapestry5/corelib/mixins/TriggerFragment.html). Look at the Javascript it adds to the page and try to imitate it in your component. Unfortunately the checkbox is such an ugly/clunky implementation of a really awesome little component. I agree . . . -- Thiago H. de Paula Figueiredo Independent Java consultant, developer, and instructor http://www.arsmachina.com.br/thiago - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: [T5] Layout component: resolving unclarities
Em Wed, 21 Jan 2009 22:07:20 -0300, manuel aldana ald...@gmx.de escreveu: yes, it is a bit confusing that you could do your layout-concept directly as a page (see starter mail of thread). But I see now it is not a good idea, so will go for layout as a component :) Technically speaking, I think it would be possible to implement the layout concept using a page, but then your content pages would need to extend the page component and provide the content through parameter blocks, a little bit like t:parameter in Grid, BeanEditor and BeanEditForm. But this would be much less elegant and easy than the component implementation of the layout concept . . . ;) -- Thiago H. de Paula Figueiredo Independent Java consultant, developer, and instructor http://www.arsmachina.com.br/thiago - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: Weird error
Em Wed, 21 Jan 2009 22:36:45 -0300, Sid Ferreira sid@gmail.com escreveu: http://pastebin.com/m43c165fd didn't included database, components or pages, just what matters. If something else is needed, tell me :D As I said before, By the way, I think there's an error in this constructor: public AccessController(ApplicationStateManager asm, ComponentClassResolver resolver, ComponentSource componentSource, UserSessionImpl newUserSession) Instead of UserSessionImpl, I think it should be UserSession, the interface declared in that wiki page. -- Thiago H. de Paula Figueiredo Independent Java consultant, developer, and instructor http://www.arsmachina.com.br/thiago - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: [ANN] JumpStart 4.0 released - uses Jetty!
hi, thx for your effort ... I hv been using jumpstart for 9 months .. and I hv ported the older version of jumpstart to run on Apache Geronimo (which use openjpa ..) ... and now openjpa support is built-in .. yeah ! I would plan to upgrade to jumpstart 4.0 , on Apache Geronimo - jetty ..., would like to seek for your advice on the tomcat vs jetty ... 1. wht is the main advantage of jetty over tomcat , on T5 development ? Thanks agian :) CG On Mon, Jan 19, 2009 at 6:28 PM, Geoff Callender geoff.callender.jumpst...@gmail.com wrote: Hi all, JumpStart 4.0 is now available. The big thing about version 4 is that now you develop and test with Jetty! It's fast and you get the full benefit of live class reloading and local debugging, even with EJB3! You can still deploy to JBoss, but we swap in OpenEJB during development to give you the business tier transparently, in-line. Use it live: http://jumpstart.doublenegative.com.au:8080/jumpstart/ or download it: http://jumpstart.doublenegative.com.au Please keep the feedback and suggestions coming. It really helps! Cheers, Geoff - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: Possible to override onActivate from an extended page?
Hi James, Consider that a dispatcher/request filter enables you to remove security concerns from your pages, this has several advantages, i.e.: separation of concerns, extensibility, and pipelining, which can be extremely useful for layered security, take for instance this use case: - Authenticate - Authorize - Audit session start/end - Audit Resource Access (Page/Component etc) - Secure Some Pages IMHO the easiest and cleanest way to do all this is with a pipeline of request filters, I can't imagine trying to maintain all of it in my pages. Although you could probably do something similar using multiple base pages and an inheritance hierarchy. I also use a base page, but prefer to use it to propagate logic that is common to every page (keeping it completely generic). Kind regards, Peter - Original Message - From: James Sherwood jsherw...@rgisolutions.com To: Tapestry users users@tapestry.apache.org Sent: Monday, 19 January, 2009 20:02:07 GMT +02:00 Athens, Beirut, Bucharest, Istanbul Subject: Possible to override onActivate from an extended page? Hello, I have a login only application and for the most part you just need to be logged in to use it except for a couple of pages. To enforce this I made a class: Class SecurePage{ Object onActivate(){ If(!visitExists){ Return index.class; } Return null; } I just then extend my pages with this one.(which will have other various methods common to many pages) My problem: Is there a way to override the onActivate (or a way around it) in the page that extends SecurePage so I could perform additional security checks? Thanks, --James - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org