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]