Hi Peter, Thanks for your comments.
My component is of type 3 I would say but based upon the fact that the pages for the crumb-trail need to have a BreadCrumb-annotation with some properties set. Currently I only store the pages with the annotation in the stack which makes it possible to jump to a page that is not annotated. That's why I checked the referer-header. Now that I've read your comments it feels like I should change to an approach where I keep all pages in the stack but only show those with the annotation. Then I can always check the previous page in the stack since it will always be the page at the top. Regards, Joakim On Mon, Oct 31, 2011 at 11:01 AM, <p.stavrini...@albourne.com> wrote: > Hi Joakim, > > I haven't used your component so I am probably not the best person to comment > in this respect, since I wouldn't know enough about the implementation; I can > only comment on my own solutions... I have written two types of breadcrumb > components in the past for Tapestry 4 and 5, and what worked best for me was > to decide first what school of thought I wanted to follow, then the rest was > easy: > > 1. Location-based breadcrumbs: Which show the user where they are in the > website’s hierarchy, for this I use a sitemap (mine is xml based since I > started with T4), but another option I haven't explored yet, but might be > worth been considering is using an annotated page class combined with an enum > to resolve the parent in the hierarchy. Once you have the parent you need > very little more to create this type of trail. > > 2. Attribute-based breadcrumbs: I have not implemented this type of > breadcrumb, but its the easiest to implement given you would know the current > page, and then derive all the attributes for the page from it. > > 3. Path-based breadcrumbs: To implement this I used a stack, which works > almost like a browser history (back button); the next link clicked then binds > itself to the previous on the stack. With a bit of clever logic and storing a > reference to the parent you can easily detect duplicates when traversing the > stack and truncate the stack accordingly when the same link is clicked twice. > Again not very complicated. > > So to answer your question: >> Do you know of something more reliable? One option would of course be >> to look at the last item in the crumb-list but since it's possible to >> have pages that are not added to the crumb-list it's a bit unreliable >> as well. > The classic example is an error page or a generic message page, you sometimes > don't quite know where to put it... for path based breadcrumbs this is a no > brainier, for location based breadcrumbs this is exactly why you always need > a reference to a 'parent' even if its the root, which gives you the > flexibility to decide case by case. > >> I could of course keep a separate list of pages regardless of if it >> has the BreadCrumb-annotation or not. > Which is what I am doing using an XML site map, some would say yuck! but if > its hierarchical data its a perfect fit, of course you could try the > annotation with enum approach, I use something similar to design site > hierarchy's when using portlets. > > Kind regards, > Peter > > ----- Original Message ----- > From: "Joakim Olsson" <joa...@unbound.se> > To: "Tapestry users" <users@tapestry.apache.org> > Sent: Monday, 31 October, 2011 09:33:50 GMT +02:00 Athens, Bucharest, Istanbul > Subject: Re: Input string 'login;jsessionid=082793EE9A197CEB7F7750090DD0423D' > is not valid; the character ';' at position 6 is not valid. > > Hi, > > The referer-header is not something that I rely on, it's only used as > a value-add. It's used together with the BreadCrumbReset-annotation > where it's possible to say that the crumb-trail should not be reset > when the user comes from one of the specified pages. The worst thing > that would happen is that the crumb-trail is reset when it shouldn't > have been. Annoying enough probably though. > > Do you know of something more reliable? One option would of course be > to look at the last item in the crumb-list but since it's possible to > have pages that are not added to the crumb-list it's a bit unreliable > as well. > > I could of course keep a separate list of pages regardless of if it > has the BreadCrumb-annotation or not. > > Regards, > Joakim > > > On Mon, Oct 31, 2011 at 8:27 AM, <p.stavrini...@albourne.com> wrote: >> Hi Joakim, >> >> Regardless of the issue with the ';' , I would rethink using the referer >> header since its a pretty unreliable header, in-fact IE does not always pass >> it along deliberately, I have noticed this in my own code, and this is >> backed up by various supporting tickets like: >> http://support.microsoft.com/kb/178066 >> >> Kind regards, >> Peter >> >> ----- Original Message ----- >> From: "Joakim Olsson" <joa...@unbound.se> >> To: "Tapestry users" <users@tapestry.apache.org> >> Sent: Saturday, 29 October, 2011 14:34:33 GMT +02:00 Athens, Bucharest, >> Istanbul >> Subject: Re: Input string >> 'login;jsessionid=082793EE9A197CEB7F7750090DD0423D' is not valid; the >> character ';' at position 6 is not valid. >> >> The problem I have seen is when Tapestry is trying to extract the >> EventContext from the path. It's using URLEncoderImpl.decode which >> chokes on the ; since it probably should have been encoded before >> being put on the URL. >> >> I think the servlet-container usually handles this but in the case >> with tapestry-breadcrumbs the Referer-header is used to get the >> referring page and it might contain the jsessionid. Not Tapestrys >> fault in this case >> >> I don't know regarding Tapestry 5.1.x though. Haven't used it in a >> long time now. >> >> Regards, >> Joakim >> >> >> On Fri, Oct 28, 2011 at 3:08 AM, Szemere Szemere >> <szemereszem...@gmail.com> wrote: >>> I see the too in development. Version 5.1.2? >>> >>> Szemere >>> >>> On 27 Oct 2011, at 16:43, Muhammad Gelbana <m.gelb...@gmail.com> wrote: >>> >>>> Please specify the exact scenario to reproduce this issue and state the >>>> version you are using >>>> >>>> On Thu, Oct 27, 2011 at 12:17 PM, Leon Derks >>>> <leon.de...@aurumeurope.com>wrote: >>>> >>>>> >>>>> Hello >>>>> >>>>> I see this error message a lot. Almost always after my first login >>>>> attempt... >>>>> >>>>> What is causing this error? >>>>> >>>>> Input string 'login;jsessionid=082793EE9A197CEB7F7750090DD0423D' is not >>>>> valid; the character ';' at position 6 is not valid. >>>>> >>>>> regards, >>>>> Leon >>>>> --------------------------------------------------------------------- >>>>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org >>>>> For additional commands, e-mail: users-h...@tapestry.apache.org >>>>> >>>>> >>>> >>>> >>>> -- >>>> *Regards,* >>>> *Muhammad Gelbana >>>> Java Developer* >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org >>> For additional commands, e-mail: users-h...@tapestry.apache.org >>> >>> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org >> For additional commands, e-mail: users-h...@tapestry.apache.org >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org >> For additional commands, e-mail: users-h...@tapestry.apache.org >> >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org > For additional commands, e-mail: users-h...@tapestry.apache.org > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org > For additional commands, e-mail: users-h...@tapestry.apache.org > > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org