Thanks Ryan. I tried using more correct html but I still got the same parsing error: "Closing tag </li> on line 28 is improperly nested with tag <span> on line 27." So I don't know of a way to put the closing tags in an If component. And if I try to put the tags in the bindings, I get a different parse error: <component id="insertUlTag" type="Insert"> <binding name="value" value="'<ul>'"/> <binding name="raw" value="true"/> </component> "Unable to read context:/WEB-INF/MyDiscussion.page: The value of attribute "value" associated with an element type "binding" must not contain the '<' character." So, I guess using a custom library of open and close tags may just be the best way to go.
> Date: Sun, 11 Jun 2006 11:55:45 -0700> From: [EMAIL PROTECTED]> To: > users@tapestry.apache.org> Subject: Re: conditional and nested ul and li > tags> > First, you can't nest UL tags outside of LI tags. I'm sure most > browsers > will render it correctly, but a more strict parser (like the > Tapestry > page parser) will choke on it. Your HTML structure needs to be:> > > <ul>> <li>Post 1</li>> <li>Post 2> <ul>> <li>Post 2, > Reply A</li>> <li>Post 2, Reply B> <ul>> > <li>Post 2, Reply B, Reply i</li>> <li>Post 2, > Reply B, Reply ii</li>> </ul>> </li>> > <li>Post 2, Reply C</li>> </ul>> </li>> <li>Post 3</li>> </ul>> > > Second, in page and component specifications, binding values are assumed > > to be OGNL calls unless you specify a prefix (unlike templates, where > > values are assumed to be literal strings unless there is a prefix). So > > there are two ways to fix your Insert component:> > <component > id="insertUlTag" type="Insert">> <binding name="value" value="'<ul>'"/>> > <binding name="raw" value="true"/>> </component>> > -- or --> > <component > id="insertUlTag" type="Insert">> <binding name="value" > value="literal:<ul>"/>> <binding name="raw" value="true"/>> </component>> > > Note that the "raw" parameter is required to prevent Tapestry from > escaping > the HTML.> > Last, you're probably looking for a recursive "DisplayReplies" > component > to walk the tree of replies and created nested UL's and LI's as > needed. > That's a little difficult to do in Tapestry because you can't > create > simple recursive components. In other words, you can't easily render > > (conditionally or otherwise) a component inside of itself without a > > getting a stack overflow exception. You have to use a trick involving > Block > and RenderBlock to get recursive behavior. If you're interested, I > can post > a tiny Tapestry app that demonstrates how to do this. It uses > "articles" > and "comments" rather than posts and replies, but it is a > stripped down > demo with one page and one component demonstrating what I > think you are > trying to do and nothing more (and it uses UL and LI tags).> > -Ryan> > > [EMAIL PROTECTED] wrote:> > I am trying to set up a page that has comments > listed in a big list surrounded by ul tags. Under certains conditions, I want > to nest more ul tags. Like this:<ul> <li>this is post 1</li> <li>this > is post 2</li> <ul> <li>this is reply to post 2</li> > <li>this is another reply to post 2</li> <li>this it yet an additional > reply</li> <ul> <li>And this is a reply to the one > above</li> </ul> <li>The last reply to post 2</li> </ul> > <li>this is post 3</li></ul>However, I run into problem in Tapestry when I > try to do something like this:<span jwcid="ifSomething"> > </ul></span>Tapestry complains that I am improperly nesting a </ul> tag > inside a span. One way I thought of getting arround this was to use an Insert > so that the html would be:<span jwcid="ifSomething"> <span > jwcid="insertUlTag"/></span>Which sort of worked until I go to the page > descriptor and I couldn't figure out how to put "<ul>" in the > binding:<component id="insertUlTag" type="Insert"> <binding > name="value" value="<ul>"/> </component>The parser complained and > using CDATA didn't help. So I ended up making a getUlOpenTag method on the > java file for the page which return "<ul>" so then I had this:<component > id="insertUlOpenTag" type="Insert"> <binding name="value" > value="ulOpenTag"/> <binding name="raw" value="true"/> > </component>and that worked.But is there not an easier way? I actually ended > up creating a new library that just had open and close HTML tags just for > instances like this.Thanks> > > _________________________________________________________________> > Express > yourself instantly with MSN Messenger! Download today it's FREE!> > > http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/> > > > > > ---------------------------------------------------------------------> To > unsubscribe, e-mail: [EMAIL PROTECTED]> For additional commands, e-mail: > [EMAIL PROTECTED]> _________________________________________________________________ Express yourself instantly with MSN Messenger! Download today it's FREE! http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/