Stefano Mazzocchi wrote:

Leszek Gawron wrote:

Jonas Ekstedt wrote:

I think the reason for taglibs are that rendering an object is often
more complicated than simply outputting a value. For example, suppose
you want to render a calendar covering the current month. This is a
typical component that would lend itself well as a tag class. The
template writer would simply do:

<calendar:month current-date="${myDate}"/>

The tag might output something like this:

<month value="2">
  <week value="12">
    <day value="5" name="Monday"/>
    <day value="6" name="Tuesday" current="true"/>
    <day value="7" name="Wednesday"/>
    ...
  </week>
  ...
</month>

Later transformations would transform it into a table or whatever. This
type of calendar would be very hard to do for a template author without
the help of a tag library.


I have completely no time these days so I was just waiting for the single post to say: Cannot agree more here :)


I cannot disagree more.

${myDate as month}

will do the above without mentioning tags (and will be much more Dreamweaver-friendly).


Hehe, this is exactly what I outlined in my "What do we need taglibs for?" post. The fight is merely about tags vs brace-expansion syntax, but not about the underlying feature.

<snip/>

* wiki renderers
  currently I do something like to parse wiki syntax:

function radeoxToSAX( str, consumer ) {
var radeoxStr = radeoxEngine.render( str, radeoxContext );
var buffer = new java.lang.StringBuffer("<root>" );
buffer.append( radeoxStr )
buffer.append( "</root>" );
var is = new Packages.org.xml.sax.InputSource( new java.io.StringReader( buffer.toString() ) );


var parser = null;
var includeConsumer = new org.apache.cocoon.xml.IncludeXMLConsumer( consumer, consumer );
includeConsumer.setIgnoreRootElement( true );
try { parser = cocoon.getComponent( Packages.org.apache.excalibur.xml.sax.SAXParser.ROLE );
parser.parse( is, includeConsumer ); } finally {
if ( parser != null ) cocoon.releaseComponent( parser );
}
}


<jx:macro name="radeox-string">
    <jx:parameter name="value"/>
    <jx:set var="ignored" value="${cocoon.session.radeox( value,
                                           cocoon.consumer )}"/>
</jx:macro>


OH COME ON! you can do a generator and cinclude a subpipeline for that.


Or ${wikistring as radeox} :-)

Sylvain

--
Sylvain Wallez                                  Anyware Technologies
http://www.apache.org/~sylvain           http://www.anyware-tech.com
{ XML, Java, Cocoon, OpenSource }*{ Training, Consulting, Projects }



Reply via email to