I'm deeply sorry for keeping you guys busy, and really appreciate the
feedback. But I nailed it. It had to do with the way I'm passing the
model. Via the Layout class it works, but not so via the Layout
template. I'm sure (am I?) that this is by design of T5 - so sorry for
any inconvenience.

-J.


On Fri, 2008-04-18 at 16:58 +0200, Chris Lewis wrote:
> Wow this is a bit tangled. I remember this from the other thread now( [
> BasePage -> Layout -> RealPage ] ). I don't mean to jerk you around, but
> can you provide the exception report page? I think if we can see the
> line causing this as well as the stack trace, we can nail down where T5
> is expecting something it's not getting.
> 
> Jan Vissers wrote:
> > The layout component that passes in the 'breadCrumb' model to the
> > 'heading' component which should render the breadcrumbs...
> >
> >
> > <?xml version="1.0" encoding="utf-8"?>
> > <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
> > "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";>
> > <html xmlns="http://www.w3.org/1999/xhtml";
> > xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd";>
> >     <head>
> >         <meta http-equiv="Content-Type"
> > content="text/html;charset=utf-8" />
> >         <link rel="shortcut icon" href="favicon.ico" />
> >         <title>${title}</title>
> >     </head>
> >     <body>
> >         <div id="container">
> >             <t:branding t:id="branding" />
> >             <t:heading t:id="heading"
> > t:breadCrumbs="${basePage.breadCrumbHolder.model}" />
> >             <t:body />
> >             <t:copyright t:id="copyright" />
> >         </div>
> >     </body>
> > </html>
> >
> > On Fri, 2008-04-18 at 16:43 +0200, Chris Lewis wrote:
> >   
> >> And that is the part I want to see, from the template code which you
> >> still haven't shared ;-). What I'm referring to is your .tml file where
> >> you use this component.
> >>
> >> Jan Vissers wrote:
> >>     
> >>> In the snippet below if I change:
> >>>     public List<BreadcrumbBean> getBreadCrumbs()
> >>>
> >>> and let it return a freshly created list. The loop construct works.
> >>> However via the @Parameter (passing it it) doesn't.
> >>>
> >>> -J.
> >>>
> >>>
> >>> On Fri, 2008-04-18 at 16:27 +0200, Jan Vissers wrote:
> >>>   
> >>>       
> >>>> Here it is:
> >>>>
> >>>> import java.util.List;
> >>>>
> >>>> import org.apache.log4j.Logger;
> >>>> import org.apache.tapestry.annotations.Parameter;
> >>>>
> >>>> import com.philips.lighting.guidecontrol.view.BreadcrumbBean;
> >>>>
> >>>> /**
> >>>>  * The heading component holds the following pieces of Heading
> >>>> information.
> >>>>  * 
> >>>>  * <pre>
> >>>>  *    &lt;div id=&quot;heading&quot;&gt;
> >>>>  *      &lt;ul id=&quot;breadcrumbs&quot;&gt;
> >>>>  *           &lt;li
> >>>> id=&quot;prefix&quot;&gt;[ &amp;aposyou-are-here&amp;apos ]&gt;/li&gt;
> >>>>  *           { when loginPage }
> >>>>  *               &lt;li&gt;&amp;aposlogin-page&amp;apos&lt;/li&gt;
> >>>>  *           { when not loginPage }
> >>>>  *               { for all crumbs }
> >>>>  *                   { if crumb is last }
> >>>>  *                       &lt;li&gt;[ crumb text ]&lt;/li&gt;
> >>>>  *                   { if crumb is not last }
> >>>>  *                       &lt;li&gt;&lt;a href=&quot;[ crumb
> >>>> link ]&quot;&gt;[ crumb text ]&lt;/a&gt; &gt; &lt;/li&gt;
> >>>>  *      &lt;/ul&gt;
> >>>>  *    &lt;/div&gt;
> >>>>  * </pre>
> >>>>  * 
> >>>>  * @author Cumquat Information Technology
> >>>>  * 
> >>>>  */
> >>>> public class Heading {
> >>>>     private static final Logger logger =
> >>>> Logger.getLogger(Heading.class);
> >>>>     
> >>>>     @Parameter
> >>>>     private boolean loginPage = false;
> >>>>
> >>>>     @Parameter
> >>>>     private List<BreadcrumbBean> breadCrumbs;
> >>>>
> >>>>     private int index;
> >>>>
> >>>>     private BreadcrumbBean crumb;
> >>>>
> >>>>     public boolean isLoginPage() {
> >>>>         return loginPage;
> >>>>     }
> >>>>
> >>>>     public List<BreadcrumbBean> getBreadCrumbs() {
> >>>>         return breadCrumbs;
> >>>>     }
> >>>>
> >>>>     public void setBreadCrumbs(List<BreadcrumbBean> breadCrumbs) {
> >>>>         logger.debug("Setting breadcrumbs: "+breadCrumbs);
> >>>>         this.breadCrumbs = breadCrumbs;
> >>>>     }
> >>>>
> >>>>     public int getIndex() {
> >>>>         return index;
> >>>>     }
> >>>>
> >>>>     public void setIndex(int index) {
> >>>>         this.index = index;
> >>>>     }
> >>>>
> >>>>     public BreadcrumbBean getCrumb() {
> >>>>         return crumb;
> >>>>     }
> >>>>
> >>>>     public void setCrumb(BreadcrumbBean crumb) {
> >>>>         this.crumb = crumb;
> >>>>     }
> >>>>
> >>>>     public boolean isLastCrumb() {
> >>>>         return (index == breadCrumbs.size() - 1);
> >>>>     }
> >>>>     
> >>>> }
> >>>>
> >>>> On Fri, 2008-04-18 at 16:22 +0200, Chris Lewis wrote:
> >>>>     
> >>>>         
> >>>>> We still haven't seen your template code, where you declare this
> >>>>> component and pass it the model. I can't be sure but perhaps it will
> >>>>> shed some light...
> >>>>>
> >>>>> Jan Vissers wrote:
> >>>>>       
> >>>>>           
> >>>>>> The problem is somehow related to the way my page and component are
> >>>>>> hooked up/working.
> >>>>>>
> >>>>>> For testing purposes I now create the Breadcrumb list in the component
> >>>>>> itself, simply returning a created list on the fly whenever
> >>>>>> getBreadCrumbs() is called. This works as expected!!!
> >>>>>>
> >>>>>> Strange thing is that via passing the 'model' to the component via a
> >>>>>> page binding the same thing doesn't work. This must be a bug?!
> >>>>>>
> >>>>>> -J.
> >>>>>>
> >>>>>> On Fri, 2008-04-18 at 15:59 +0200, Chris Lewis wrote:
> >>>>>>   
> >>>>>>         
> >>>>>>             
> >>>>>>> That looks good to me. I don't have an example I can look at with a
> >>>>>>> loop, but I do have one with a t:grid in which I reference a bean
> >>>>>>> property of a custom class. It's possible that the two are vastly
> >>>>>>> different, but I wouldn't think that.
> >>>>>>>
> >>>>>>> Jan Vissers wrote:
> >>>>>>>     
> >>>>>>>           
> >>>>>>>               
> >>>>>>>> On the component I have:
> >>>>>>>>
> >>>>>>>>     @Parameter
> >>>>>>>>     private List<BreadcrumbBean> breadCrumbs;
> >>>>>>>>
> >>>>>>>> This is passed in via the containg (base)page.
> >>>>>>>> And in the same component class I have:
> >>>>>>>>
> >>>>>>>>     private BreadcrumbBean crumb;
> >>>>>>>>
> >>>>>>>>     public BreadcrumbBean getCrumb() {
> >>>>>>>>         return crumb;
> >>>>>>>>     }
> >>>>>>>>
> >>>>>>>>     public void setCrumb(BreadcrumbBean crumb) {
> >>>>>>>>         this.crumb = crumb;
> >>>>>>>>     }
> >>>>>>>>
> >>>>>>>> This should be right, right?
> >>>>>>>>
> >>>>>>>> -J.
> >>>>>>>>
> >>>>>>>> On Fri, 2008-04-18 at 14:00 +0100, nicholas Krul wrote:
> >>>>>>>>   
> >>>>>>>>       
> >>>>>>>>             
> >>>>>>>>                 
> >>>>>>>>> ? is your crumb property of type BreadCrumbBean, or is it type 
> >>>>>>>>> String?
> >>>>>>>>> should be same as breadCrumbs<?TYPE>
> >>>>>>>>>
> >>>>>>>>> On Fri, Apr 18, 2008 at 1:56 PM, Chris Lewis <[EMAIL PROTECTED]>
> >>>>>>>>> wrote:
> >>>>>>>>>
> >>>>>>>>>     
> >>>>>>>>>         
> >>>>>>>>>               
> >>>>>>>>>                   
> >>>>>>>>>> I can't speak about your t:if bit because I don't know what 
> >>>>>>>>>> "LastCrumb"
> >>>>>>>>>> would be, but assuming that your page class has getters/setters 
> >>>>>>>>>> (or the
> >>>>>>>>>> property is annotated with @Property) for the "crumb" property, a 
> >>>>>>>>>> getter
> >>>>>>>>>> for your "breadCrumbs," and your crumb bean defines a "getName" 
> >>>>>>>>>> method,
> >>>>>>>>>> you *should* be good.
> >>>>>>>>>>
> >>>>>>>>>> It would be helpful if you can include the exception, specifically 
> >>>>>>>>>> the
> >>>>>>>>>> line it references, etc.
> >>>>>>>>>>
> >>>>>>>>>> chris
> >>>>>>>>>>
> >>>>>>>>>> PS the list is good, the IRC channel (irc.freenode.net #tapestry) 
> >>>>>>>>>> is
> >>>>>>>>>> better ;-)
> >>>>>>>>>>
> >>>>>>>>>> Jan Vissers wrote:
> >>>>>>>>>>       
> >>>>>>>>>>           
> >>>>>>>>>>                 
> >>>>>>>>>>                     
> >>>>>>>>>>> Yep, sure, I may I add - This mailing list is great and Tapestry 
> >>>>>>>>>>> rocks!
> >>>>>>>>>>>
> >>>>>>>>>>>  <t:loop source="breadCrumbs" value="crumb" index="index">
> >>>>>>>>>>>     <t:if test="LastCrumb">
> >>>>>>>>>>>        ${crumb.name}
> >>>>>>>>>>>        <t:parameter name="else">
> >>>>>>>>>>>            <a href="#"
> >>>>>>>>>>> t:type="pageLink" ....>${crumb.name}</a>
> >>>>>>>>>>>               >
> >>>>>>>>>>>        </t:parameter>
> >>>>>>>>>>>     </t:if>
> >>>>>>>>>>> </t:loop>
> >>>>>>>>>>>
> >>>>>>>>>>> -J.
> >>>>>>>>>>>
> >>>>>>>>>>> On Fri, 2008-04-18 at 14:34 +0200, Chris Lewis wrote:
> >>>>>>>>>>>
> >>>>>>>>>>>         
> >>>>>>>>>>>             
> >>>>>>>>>>>                   
> >>>>>>>>>>>                       
> >>>>>>>>>>>> Can you share some code? At least the relevant part from 
> >>>>>>>>>>>> template would
> >>>>>>>>>>>> be helpful.
> >>>>>>>>>>>>
> >>>>>>>>>>>> chris
> >>>>>>>>>>>>
> >>>>>>>>>>>> Jan Vissers wrote:
> >>>>>>>>>>>>
> >>>>>>>>>>>>           
> >>>>>>>>>>>>               
> >>>>>>>>>>>>                     
> >>>>>>>>>>>>                         
> >>>>>>>>>>>>> Hi,
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Just to make sure I'm not missing something.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> In T4 when I wrote a @For construct I could use value="..." as 
> >>>>>>>>>>>>> long as
> >>>>>>>>>>>>>             
> >>>>>>>>>>>>>                 
> >>>>>>>>>>>>>                       
> >>>>>>>>>>>>>                           
> >>>>>>>>>> I
> >>>>>>>>>>       
> >>>>>>>>>>           
> >>>>>>>>>>                 
> >>>>>>>>>>                     
> >>>>>>>>>>>>> provided a setter|getter pair for the class involved - in this 
> >>>>>>>>>>>>> case
> >>>>>>>>>>>>> BreadcrumbBean. I want to iterate over a list of beans and use 
> >>>>>>>>>>>>> each
> >>>>>>>>>>>>> instance individually. Now T5 throws up on me with this nice 
> >>>>>>>>>>>>> coercion
> >>>>>>>>>>>>> message. Does this mean I need to contribute my own coercion - 
> >>>>>>>>>>>>> or is
> >>>>>>>>>>>>> there a more simple way? In my case BreadcrumbBean is a simple 
> >>>>>>>>>>>>> class
> >>>>>>>>>>>>> holding three String members.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Thanks (again :-))
> >>>>>>>>>>>>> -J.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> ---------------------------------------------------------------------
> >>>>>>>>>>>>> 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]
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>         
> >>>>>>>>>>>             
> >>>>>>>>>>>                   
> >>>>>>>>>>>                       
> >>>>>>>>>> --
> >>>>>>>>>> http://thegodcode.net
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>       
> >>>>>>>>>>           
> >>>>>>>>>>                 
> >>>>>>>>>>                     
> >>>>>>>> ---------------------------------------------------------------------
> >>>>>>>> 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]
> >>>>>>
> >>>>>>
> >>>>>>   
> >>>>>>         
> >>>>>>             
> >>>> ---------------------------------------------------------------------
> >>>> 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]
> >>>
> >>>
> >>>   
> >>>       
> >
> >
> > ---------------------------------------------------------------------
> > 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