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> >>>> * <div id="heading"> >>>> * <ul id="breadcrumbs"> >>>> * <li >>>> id="prefix">[ &aposyou-are-here&apos ]>/li> >>>> * { when loginPage } >>>> * <li>&aposlogin-page&apos</li> >>>> * { when not loginPage } >>>> * { for all crumbs } >>>> * { if crumb is last } >>>> * <li>[ crumb text ]</li> >>>> * { if crumb is not last } >>>> * <li><a href="[ crumb >>>> link ]">[ crumb text ]</a> > </li> >>>> * </ul> >>>> * </div> >>>> * </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] > > > -- http://thegodcode.net