One of the issues that hasn't been mentioned here is, perhaps, a bit more intangible. This is to do with the balance between declarative and procedural code. In this I can't speak for webwork, but our developer team has found the balance to be very good in tapestry/hivemind which means that incremental and modular changes have been very possible. There are a number of factors here that include how easy is it for someone else to pick up and make changes (how easy is it to comprehend), how easy is to make those changes (add features - good separation of concerns), how easy to refactor (separation of concerns again) and so on. In this way early effort has paid off. I am also surprised to see the comment that hivemind is more verbose that Spring, I had understood the opposite! I can't understand why one would want velocity or freemarker on top of tapestry. I have worked with velocity and found it a right pain precisely for the reasons above, yes you have built in macros and stuff, but you don't have the ability to debug directly, as I understand it. I found that, even with relatively simple page logic, I soon got lost and had to redesign so that this was expressed in code (where a unit test was also a more or less one step - another huge advantage to the tapestry approach). I realise this will be different for different people, especially for those more familiar with velocity or webwork. Best, Adam
On 19/04/06, Nick Faiz <[EMAIL PROTECTED]> wrote: > > Ive been using webwork 2 previously to this, my first project with > Tapestry (4.0). > > I think the weirdest thing was accepting the idea of using ASO's > (Application State Objects), whereas in webwork 2 we coded to a > stateless model. I still have to see how it scales but we're running > with it for now. > > I'm also still not sure how, or even if, Tapestry meets the needs of > interceptors for pages and services alike. This was very clear in an > xwork.xml file, thanks to interceptor stacks. If anyone can point me > to an example of an interceptor which can be function within > Tapestry's framework I would be grateful (please don't reply and > suggest I use a ServletFilter - I mean Tapestry's framework). > > Besides that there are differences - Tapestry is excellent at the > modular component thing, Webwork 2 is a little messier but makes for > a faster development path. I find that I'm often fussing about with > bindings and the like in .page and .jwc files. On the other hand, the > configuration effort might be worth it, given how easily I can drop a > component in somewhere. > > I find Hivemind to be very verbose and complex compared to Spring. > The documentation for Hivemind is sometimes lengthy and indirect and > can be frustrating. Hivemind is running well within our project, but > whenever I seek to learn more about it's workings I find myself > preferring to read the source code. > > On the other hand, I'm really enjoying using Tapestry and Hivemind. > If I work with it again I'd like to experiment with configuring > Velocity or Freemarker at the template level and see how else I could > customize it. I might, perhaps, try and involve Spring, rather than > using Hivemind as the IoC framework. > > Cheers, > Nick > > > On 15/04/2006, at 6:24 AM, Payne, Matthew wrote: > > > We can use Tapestry 4. > > It looks like I need to take a look at the specifics of applying > > these services. > > Thanks. > > > > Matt > > > > > > -----Original Message----- > > From: James Carman [mailto:[EMAIL PROTECTED] > > Sent: Friday, April 14, 2006 3:14 PM > > To: 'Tapestry users' > > Subject: RE: tapestry for a webwork developer > > > > Matt, > > Are you guys stuck with Tap3? If you're using Tap4, then you can use > > HiveMind services as the "guts" of your pages/components. Then, > > you can > > apply interceptors to those services much like you're describing. > > James > > > > -----Original Message----- > > From: Payne, Matthew [mailto:[EMAIL PROTECTED] > > Sent: Friday, April 14, 2006 3:11 PM > > To: tapestry-user@jakarta.apache.org > > Subject: tapestry for a webwork developer > > > > I recently started with a new company that appears to have chosen > > tapestry > > as their framework. > > I've previously been swimming webwork over the last couple of > > years. I have > > to admit I have somewhat bias. > > > > I am digging around for a few good sample apps that use reasonably > > decent > > practices with Tapestry 4. I took a look at "Better Petshop" (uses > > tapestry > > 3). Is there anything "Better"? > > > > At first glance I was a little concerned with how verbose things were. > > For instance, the "actions" duplicate all the getters/setters that > > were in > > the main pojo they are exposing. > > > > e.g. instead of exposing get/set Customer, it > > had to copy all the properties to its action properties > > i.e. > > setGivenName(customer.getFirstname()); > > setFamilyName(customer.getLastname()); > > setAddress1(customer.getAddr1()); > > setAddress2(customer.getAddr2()); > > setCity(customer.getCity()); > > setStateOrProvince(customer.getState()); > > setCountry(customer.getCountry()); > > setPostalCode(customer.getZip()); > > setTelephoneNumber(customer.getPhone()); > > > > Is this typical with Tapestry apps? > > > > Can't we just expose the main pojo without all this extra code? > > > > The other thing I was concerned about is that much of the > > application's > > behavior is achieve via inheritance(e.g. the archaic struts way). > > OrderBillingPage-->ProtectedPage-->PetshopBasePage > > > > In webwork, I'd probably achieve the same behavior by adding a some > > type of > > securityInterceptor to that actions config(the are ways to default > > this to > > whole packages of actions). > > > > <action name="orderBilling" class="com.something.OrderBillingAction"> > > <interceptor-ref name="defaultStack"/> > > <interceptor-ref name="security"/> <!--- checks for > > user login > > and redirects to global result "LOGON" if needed --> > > <result name="success">billing.jsp</result> > > </action> > > > > Does tapestry have equivalent interceptors that can be defaulted for > > sections of the application without having to resort to inheritance? > > > > Thanks, > > > > Matt > > > > This message, including any attachments, is intended only for the > > recipient(s) > > named above. It may contain confidential and privileged > > information. If you > > have > > received this communication in error, please notify the sender > > immediately > > and > > destroy or delete the original message. Also, please be aware that > > if you > > are not > > the intended recipient, any review, disclosure, copying, > > distribution or any > > > > action or reliance based on this message is prohibited by law. > > > > > > > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > This message, including any attachments, is intended only for the > > recipient(s) > > named above. It may contain confidential and privileged > > information. If you have > > received this communication in error, please notify the sender > > immediately and > > destroy or delete the original message. Also, please be aware that > > if you are not > > the intended recipient, any review, disclosure, copying, > > distribution or any > > action or reliance based on this message is prohibited by law. > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > Nick Faiz, > Developer > www.q9software.com > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > >