I've always been mystified by the "steep learning curve of Tapestry". To me, Tapestry operates simply and logically and its Struts and
Servlets that are confusing.
Many people become confused when they think that Tapestry is Struts++ when, in fact, its an entirely different beast. They have to unlearn the bad practices forced upon them by Struts.
I've done a lot of work in Struts and it is
so painful, compared to Tapestry! When I create a link on a page and then spend ten minutes writing an Action, perhaps an ActionForm (to collect query parameters) update struts-config.xml, etc. In Tapestry, I write a listener method and I'm done.
Back to the question: yes, your backend code should be completely reusable. Tapestry doesn't care about the backend, it just needs to be connected up to objects with properties.