blob: bebc4df2782fb6615b3077706ca5c1374a230a68 [file] [log] [blame]
<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Tapestry: FAQ</title><link rel="STYLESHEET" type="text/css" href="scripts/style_virtlib_pcIE55.css">
</head>
<body bgcolor="#839cd1" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<table width="100%" border="0" cellspacing="0" cellpadding="2">
<tr>
<td valign="top" align="left"><IMG height=44 alt="[Tapestry Logo]" src ="images/ico_t.gif" width=44 align=absMiddle border=0 >&nbsp;<IMG height=22 alt=Tapestry src="images/hd_tapestry.gif" width=100 align=absMiddle vspace=17 border=0>
<br><br>
<table border="0" cellspacing="0" cellpadding="2">
<tr valign="top">
<td><IMG height=12 src="images/dots_leftnav.gif" width=14></td>
<td><b>How does Tapestry compare to other frameworks?</b>
<br><br>
Tapestry is very much unlike most other frameworks in that it doesn't use
code generation; instead it uses a true component object model based
on JavaBeans properties and strong specifications. This gives Tapestry a huge
amount of flexibility and enables dynamic runtime inspection of the application
with the Tapestry Inspector (a mini-application that can be built into any Tapestry
application).
<p>In addition, Tapestry applications require
far less Java coding and are far more robust than equivalent
applications developed with other popular frameworks. This is
because the Tapestry framework takes responsibility for many
important tasks, such as maintaining server-side state and
dispatching incoming requests to appropriate objects and methods.</p>
</td>
</tr>
<tr><td height="10"><IMG src="images/spacer.gif" width=1></td></tr>
<tr valign="top">
<td><IMG height=12 src="images/dots_leftnav.gif" width=14></td>
<td><b>How is the performance of Tapestry?</b>
<br><br>
My own testing, documented in the Sept. 2001 issue of the Java Report,
agrees with other testing (documented in the Tapestry discussion forums):
Although straight JSPs have a slight edge in demo applications, in
real applications with a database or application server backend, the performance
curves for equivalent Tapestry and JSP applications are identical.
<p>Don't think about the performance of
Tapestry; think about the performance of your Java developers.</p>
</td>
</tr>
<tr><td height="10"><IMG src="images/spacer.gif" width=1></td></tr>
<tr valign="top">
<td><IMG height=12 src="images/dots_leftnav.gif" width=14></td>
<td>
<P><b>Is Tapestry a JSP tag library?</b>
<br><br>
Tapestry is
<STRONG>not </STRONG>a JSP tag library; Tapestry builds on the
servlet API, but doesn't use JSPs in any way.&nbsp; It uses it own
HTML template format and its own rendering engine.</P>
<P>In the current release, 2.2, Tapestry does not interoperate with
JSP pages ... its a whole, seperate world.</P>
<P>This has proven to be a big sticking point in adoption of
Tapestry.&nbsp; In the next release, 2.3, Tapestry will finally get
JSP interoperation.&nbsp; You'll be able to represent a Tapestry
component inside a JSP as a JSP tag, but still use everything good
and bad about JSPs, including other taglibs and even Java
scriplets.</P>
</td>
</tr>
<tr><td height="10"><IMG src="images/spacer.gif" width=1></td></tr>
<tr valign="top">
<td><IMG height=12 src="images/dots_leftnav.gif" width=14></td>
<td><b>What does it cost?</b>
<br><br>
Tapestry is open source and free. It is licensed
under the Apache Software License, which allows
it to be used even inside proprietary software.
</td>
</tr>
<tr><td height="10"><IMG src="images/spacer.gif" width=1></td></tr>
<tr valign="top">
<td><IMG height=12 src="images/dots_leftnav.gif" width=14></td>
<td><b>Is there a WYSIWYG editor for Tapestry, or an IDE plugin?</b>
<br><br>
Currently, no WYSIWYG editor is available for Tapestry; however, the design of Tapestry
allows existing editors to work reasonably well (Tapestry additions to the HTML markup
are virtually invisible to a WYSIWYG editor).
<p><a target="top" href="http://sf.net/projects/spindle">Spindle</a>
is a Tapestry plugin
for the excellent open-source <a href="http://www.eclipse.org">Eclipse</a> IDE. It adds wizards and editors
for creating Tapestry applications, pages and components.</p>
</td>
</tr>
<tr><td height="10"><IMG src="images/spacer.gif" width=1></td></tr>
<tr valign="top">
<td><IMG height=12 src="images/dots_leftnav.gif" width=14></td>
<td><b>I have to restart my application to pick up changes to specifications and templates, how
can I avoid this?</b>
<br><br>
Start your servlet container with the JVM system parameter
<code>net.sf.tapestry.disable-caching</code> set to true, i.e.,
<code>-Dnet.sf.tapestry.disable-caching=true</code>.
<p>Tapestry will discard cached specifications
and templates after each request. You application will run a bit
slower, but changes to templates and specifications will show up
immediately. This also tests that you are persisting server-side
state correctly.</p>
</td>
</tr>
<tr><td height="10"><IMG src="images/spacer.gif" width=1></td></tr>
<tr valign="top">
<td><IMG height=12 src="images/dots_leftnav.gif" width=14></td>
<td><b>I keep getting <A href="doc/api/net/sf/tapestry/StaleSessionException.html">StaleSessionException</a>s
from links and forms.
</b>
<br><br>
Tapestry doesn't create a <code>HttpSession</code> until you have server-side state to store. Most applications
don't start to store server-side state until after the Home page.
<p>
By default,
<A href="doc/ComponentReference/ActionLink.html">ActionLink</a>,
<A href="doc/ComponentReference/DirectLink.html">DirectLink</a> and
<A href="doc/ComponentReference/Form.html">Form</a> require
that
a session be already created (this is
primarily to handle the case where a user walks away from their computer and returns, and the
servlet container has discarded the HttpSession in the meantime).
Set the stateful parameter to false (i.e.,
<code>&lt;binding name="stateful" expression="false"/&gt;</code>) to disable this check.</p>
</td>
</tr>
</table>
</td>
</tr>
</table><!-- ****END BODY WRAPPER**** --><!-- ****FOOTER**** -->
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr bgcolor="#8e9cd1">
<td>&nbsp;
</td>
</tr>
<tr bgcolor="#4b5887">
<td height="47">
<IMG src="images/spacer.gif">
</td>
</tr>
<tr bgcolor="#333333">
<td height="65">
<table width="724" border="0" cellspacing="0" cellpadding="3" bgcolor="#000000">
<tr height="65">
<td width="654" align="right" valign="bottom" class="clsFooter">&copy; 2003 Apache Software Foundation.
All rights reserved.
</td>
<td width="70">&nbsp;
</td>
</tr>
</table>
</td>
</tr>
<tr bgcolor="#333333">
<td>
<table width="724" border="0" cellspacing="0" cellpadding="3" bgcolor="#000000">
<tr height="65">
<td height="200" width="654">&nbsp;
</td>
<td width="70">&nbsp;
</td>
</tr>
</table>
</td>
</tr>
</table><!-- ****END FOOTER**** -->
</body>
</html>