...
Contents
Table of Contents | ||||
---|---|---|---|---|
|
You may have an existing JSP (or Struts, Spring MVC, etc.) application that you want to migrate to Tapestry. It's quite common to do this in stages, moving some functionality into Tapestry and leaving other parts, initially, in the other system. You may need to prevent Tapestry from handling certain requests.
...
All you need to know is how Tapestry converts page class names to page names (that appear in the URL). It's basically a matter of stripping off the root-package.pages
prefix from the fully qualified class name. So, for example, if you are building a login screen as a JSP, you might want to have a Tapestry page to receive the user name and password. Let's assume the Tapestry page class is com.example.myapp.pages.LoginForm
; the page name will be loginform (although, since
Tapestry is case insensitive, LoginForm would work just as well), and the URL will be /loginform
.
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
<form method="post" action="/loginform"> <input type="text" value="userName"/> <br/> <input type="password" value="password"/> <br/> <input type="submit" value="Login"/> </form> |
On the Tapestry side, we can expect that the LoginForm page will be activated; this means that its activate event handler will be invoked. We can leverage this, and Tapestry's RequestParameter annotation:
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
public class LoginForm { void onActivate(@RequestParameter("userName") String userName, @RequestParameter("password") String password) { // Validate and store credentials, etc. } } |
...
On the Tapestry side, it is very easy to read and write session attributes:
Code Block | |||||||
---|---|---|---|---|---|---|---|
| |||||||
public class ShowSearchResults { @SessionAttribute private SearchResults searchResults; } |
...