I have a strange problem with the pagelink component. I am trying to navigate 
from the start page to the ViewPhoto page but I get an exception:

[ERROR] RequestExceptionHandler Processing of request failed withuncaught 
exception: Exception in 
methodcom.thc.web.pages.ViewPhoto.onActivate(java.lang.Long) 
(atViewPhoto.java:18), parameter #1: Coercion of images to typejava.lang.Long 
(via String --> Long) failed: For input string:"images"
org.apache.tapestry.runtime.ComponentEventException: Exception inmethod 
com.thc.web.pages.ViewPhoto.onActivate(java.lang.Long) (atViewPhoto.java:18), 
parameter #1: Coercion of images to typejava.lang.Long (via String --> Long) 
failed: For input string:"images"
    at 
org.apache.tapestry.internal.structure.ComponentPageElementImpl.triggerContextEvent(ComponentPageElementImpl.java:1021)
...

and

[ERROR] RequestExceptionHandler Processing of request failed withuncaught 
exception: Exception in 
methodcom.thc.web.pages.ViewPhoto.onActivate(java.lang.Long) 
(atViewPhoto.java:18), parameter #1: Coercion of styles to typejava.lang.Long 
(via String --> Long) failed: For input string:"styles"
org.apache.tapestry.runtime.ComponentEventException: Exception inmethod 
com.thc.web.pages.ViewPhoto.onActivate(java.lang.Long) (atViewPhoto.java:18), 
parameter #1: Coercion of styles to typejava.lang.Long (via String --> Long) 
failed: For input string:"styles"
    at 
org.apache.tapestry.internal.structure.ComponentPageElementImpl.triggerContextEvent(ComponentPageElementImpl.java:1021

I think it's because tapestry is interpreting the ref to styles/style and 
images/x.jpg (in layout.tml) as params to the onActivate method. Do I have to 
use a special tapestry tag for any hrefs in my templates? The page renders 
without any problems if I leave out the onActivate method.

Here's the relevant code

Start.tml:

<t:pagelink page="viewPhoto" context="currentPhoto.id">
<img alt="#" src="${currentPhoto.imageResource.resource}" width="64"height="64" 
/>
</t:pagelink>

ViewPhoto.java:

package com.thc.web.pages;
... 
public class ViewPhoto {
    
    private Photo photo;
    
    @Inject
    private PhotoDao photoDao;
    
    private Long imageId;
    
    void onActivate(Long imageId) {
        this.imageId = imageId;
        photo = photoDao.findImageById(imageId);
    }
    
    Long onPassivate() { return imageId }
    
    public Photo getPhoto() {
        return photo;
    }

    public void setPhoto(Photo photo) {
        this.photo = photo;
    }

}

layout.tml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Blotterpad</title>
<link href="styles/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<form action="#">
<div id="container">
    <div id="header">
  <t:pagelink page="start"><img alt="#" src="images/art_Logo.gif" width="269" 
height="92" /></t:pagelink></div>
  <div id="login"><a href="#"><img alt="#" src="images/btn_home.jpg" width="11" 
height="10" /></a> | <a href="#"><img alt="#" src="images/btn_contact.jpg" 
width="11" height="8" /></a></div>
    <div class="clear"></div>
    <div id="navcontainer">
    <div style="float:right;"><img alt="#" src="images/art_navbg_right.jpg" 
width="6" height="31" /></div>
      <div class="menutop">
        <ul id="cssdropdown">
          <li class="mainitems"><a t:type="pagelink" page="Start" 
href="#">Home</a></li>
          <li class="mainitems"><a t:type="pagelink" page="MyPhotos" 
href="#">My Photos</a></li>
          <li class="mainitems"><a t:type="pagelink" page="MyEditions" 
href="#">My Artwork</a></li>
          <li class="mainitems"><a t:type="pagelink" page="MyFavourites" 
href="#">My Favorites</a></li>
          <li class="mainitems"><a t:type="pagelink" page="Search" 
href="#">Search</a></li>
          <li class="mainitems"><a t:type="pagelink" page="MyAccount" 
href="#">MyAccount</a></li>
        </ul>
      </div>
    </div>
   
   <!-- content here -->
   <t:body />
   
  <div class="clear"></div>
  <div class="clear"></div>
  <div id="footer">
    <div id="navcontainer2">
        <ul id="navlist">
        <li><a href="#">Home</a></li>
        <li><a href="#">Registration</a></li>
        <li><a href="#">My Galleries</a></li>
        <li><a href="#">My Favourites</a></li>
        <li><a href="#">My Editions</a></li>
        <li><a href="#">My Account</a></li>
        <li><a href="#">View photo</a></li>
        <li style="border:0px!important;"><a href="#">Contact Us</a></li>
        </ul>
    </div>
<p style="padding:10px 0px;"><strong>Blotterpad</strong> 2007.All Rights 
reserved</p>
  </div>
</div>
</form>
</body>
</html>

The start page generates a link in the form http://myapp/viewphoto/1 as I would 
expect but when i click on the link i get the exception

Thanks!

Reply via email to