Wednesday, May 07, 2008

Improvements to the Tapestry 5 Tutorial

I spent some time yesterday revamping the Tapestry 5 Tutorial; you can see the updates at the nightly build site.

In short order we turned the Address object into a Hibernate entity, and stored it in a MySQL database, then used a Grid to show the added Addresses. Later improvements to the Tutorial will show editting and removal of Addresses.

I think the correct reaction to this would be "Dude, where's my code?". The application code for this app is so small you'd think something was missing. But that's what's Tapestry is all about ... providing the structure so that the framework can do the busy work.

I also updated some of the existing screen shots to show the "error bubbles" style of client-side validation that's been in T5 for quite some time.

People have been pining for a 5.0.12 release, but I'm glad I've been holding it back; I've been having a chance to fix bugs, and finding many annoyances as I work on a client project. Working in earnest on a project is always the best way to find the rough edges, and the end result is much more polished.

I think I must be a harsher critic of Tapestry than most; I frequently add bugs along the lines of "when I screw up, Tapestry should tell me how to fix it".

14 comments:

  1. I want to thank you sooo much for creating Tapestry 5. It is just great :)

    ReplyDelete
  2. The second form page (http://tapestry.formos.com/nightly/tapestry5/tutorial1/forms2.html), which is presumably the one with the hibernate stuff, is empty. It's served with no content (0 bytes).

    ReplyDelete
  3. Ooops. Thanks for the heads up, I've corrected it and it will rebuild tonight.

    ReplyDelete
  4. Why oh why do I keep coming back here and making myself depressed at the really cool tool I could be using instead of WebLogic + Beehive. Gotta get me a Tapestry job....

    I know it might be a bit of work to do it, but it'd be nice to see the screencasts updated as some of those are very old. They make an invaluable resource to be able to show people what can be done. But the most recent one is over a year old, and I'm sure would look so much better with the latest version.

    ReplyDelete
  5. I couldn't agree more about a screen cast, and I think one that shows off some of the fun Ajax features would be great.

    Next week my schedule opens up and that's on my list of things to work on.

    ReplyDelete
  6. Glad to see you're shaking down Tapestry w/ customer apps. The worse thing that could happen is a bunch of backwards incompatible APIs between 5.0.12 and previous 5.0.x versions :-P

    ReplyDelete
  7. I've been using Tapestry since the 3.0.x days and have loved it over Struts.

    Tapestry 4 was an improvement over 3 and, from what I've seen, 5 is an improvement over 4. I especially love the annotations.

    I'm concerned, however, that taking so long to release this version will effect how strong a following Tapestry continues to have - Howard can you comment on that?

    ReplyDelete
  8. What slowed down T5 for half of 2007 was me working for Feature50, where I wasn't doing Tapestry work. What's slowing it down now is me working on a T5 client project, which is really great for Tapestry in terms of making sure everything really works well together. My share of the client project is almost over, and I'll be full time on finishing T5 starting within the next few days.

    ReplyDelete
  9. As I promised at NFJS, here's some T5 content (http://www.troymaxventures.com/2008/05/tapestry5-netbeans-quickstart.html) that might be relevant to the Tapestry tutorial (it seems to be quite Eclipse centric, and it seems like NetBeans can have a better story there, especially for newcomers).

    ReplyDelete
  10. Nice tutorial (with images too)!

    Hey, if you're using Groovy where do all the getter annotations go? (e.g. @NonVisual and @Validate("required"))

    Assuming your Groovy class looks like this:

    class Address
    {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    Long id

    Honorific honorific

    String firstName

    String lastName

    String street1

    String street2

    String city

    String state

    String zip

    String email

    String phone
    } // yes, no explicit getters or setters

    ReplyDelete
  11. Howard,

    Your work on Tapestry is truly amazing.

    I know that you are a very busy guy, but I am having some issues with the forms tutorial. It fails to run with latest stable jetty, when I start it using run jetty run on Eclipse.

    Render queue error in BeginRender[Index:pagelink]: java.lang.ClassNotFoundException: caught an exception while obtaining a class file for org.apache.tapestry5.corelib.components.Form

    It would be highly appreciated if you would have the time to update the tutorial to work with run jetty run, or give tips how to get it working, because jetty launcher is now obsolete. We'd really love to start to use Tapestry.

    ReplyDelete
  12. Just getting started with T5.. looks awesome so far.

    One thing in the tutorial confuses me a bit, you say "Also, it isn't an error if a request never matches an event handler." in the Hi/Lo section.
    However, I get an exception if I omit the event handler:
    org.apache.tapestry5.ioc.internal.util.TapestryException
    Request event 'action' (on component Start:actionlink) was not handled; you must provide a matching event handler method in the component or in one of its containers.

    ReplyDelete
  13. I'm working onte and up-to date and more detailed tutorial. It's going to be "live" on the Wiki rather than solidified as part of the site documentation.

    ReplyDelete
  14. Anonymous4:50 PM

    Hi Howard, I'm still new to Tapestry but I wanted to say thanks for creating it!! I've seen the integration between Tapestry and Hibernate, but I couldn't find anything about ToplinkEssentials neither Eclipselink. Do you see any possibility for them to be integrated as well ? Anyway congratulations for this great tool.

    ReplyDelete

Please note that this is not a support forum for Tapestry. Requests for help will be deleted. Please subscribe to the Tapestry user mailing list if you are in need of support, or contact me directly for professional (for pay) support.

Spammers: Don't bother. I delete your comments and it's a waste of time for both of us. 垃圾邮件发送者:不要打扰。我删除您的评论和它的时间对我们双方的浪费