In hivmind.xml:

   <contribution configuration-id="tapestry.InfrastructureOverrides">
       <property name="exceptionPageName" value="CustomExceptionPage"/>
   </contribution>

In your template for the custom exception:

<span jwcid="exception"/>

will render the exception if you have the following in your .page file:

 <component id="exception" type="ExceptionDisplay">
   <binding name="exceptions" value="ognl:exceptions"/>
 </component>

You can also use the following to render the request

  <component id="request" type="RequestDisplay" />

My class looks like this:

public abstract class CustomExceptionPage extends StaticBasePage
implements PageDetachListener {

   public abstract void setExceptions(ExceptionDescription[] exceptions);

   private static Logger log = Logger.getLogger(CustomExceptionPage.class);

   public void setException(Throwable value)
   {
       log.error(value, value);
       ExceptionAnalyzer analyzer = new ExceptionAnalyzer();
       ExceptionDescription[] exceptions = analyzer.analyze(value);
       setExceptions(exceptions);

   }
}

I don't remember where I got all that from, but it was either Kent
Tong's book or the user guide on the Tapestry website.  There is a
small chance I found it in "Tapestry in Action" which is the Tap 3
book.

--sam


On 12/3/06, Cyrille37 <[EMAIL PROTECTED]> wrote:
Hello,
I'm still learning Tapestry, and generally Java Web Application ...
Now I can understand a beat about Tapestry and create little working
project.
Here is the time for me to learn how to manage errors, like trapping an
underground exception in the view layer.

The following example is from the "Kent Tong 's book" source code: the
"shop" example.
There is a page to view shop's products details:
ProductDetails(.html,.page,.java).

In ProductDetails.java there are accessors for a product details like :
    public String getName() {
        return lookup().getName();
    }
    public String getDesc() {
        return lookup().getDesc();
    }
    public double getPrice() {
        return lookup().getPrice();
    }
The lookup method to get a Product is :
    private Product lookup() {
        return Catalog.getGlobalCatalog().lookup(getProductId());
    }

In ProductDetails.page there are components like :
    <component id="name" type="Insert">
        <binding name="value" value="name"/>
    </component>
    <component id="desc" type="Insert">
        <binding name="value" value="desc"/>
    </component>
    <component id="price" type="Insert">
        <binding name="value" value="price"/>
    </component>

How can I catch an exception throwed by
Catalog.getGlobalCatalog().lookup(getProductId()) when a ProductId is
not valid (does not exists) ?
I would like to display a nicer page than the default Tapestry's
Exception page.
The problem is that the exception occurs while parsing the
ProductDetails's specification page (ProductDetails.page) where
components are binded.

Have you got any idea or method on how to manage that kind of problems ?

thanks a lot for your experience share.
Cyrille.



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to