A document has been updated: http://cocoon.zones.apache.org/daisy/documentation/511.html
Document ID: 511 Branch: main Language: default Name: Tags (previously Advanced Control Flow - JXTemplate) Document Type: Cocoon Document (unchanged) Updated on: 6/7/07 6:06:10 PM Updated by: Reinhard Pötz A new version has been created, state: publish Parts ===== Content ------- This part has been updated. Mime type: text/xml (unchanged) File name: (unchanged) Size: 16646 bytes (previous version: 22766 bytes) Content diff: <html> <body> --- <h1>JXTemplate Generator</h1> --- --- <p>The JXTemplate Generator is a page template processor that allows you to --- inject data from Java and JavaScript objects passed by a Cocoon Flowscript into --- a Cocoon pipeline. It provides a set of tags (similar to the --- <a href="http://java.sun.com/products/jsp/jstl/">JSTL</a> core tags) that allow --- you to iterate over Java collections (and Java or JavaScript arrays) and to test --- for the presence of optional or alternate bean properties, as well as embedded --- expressions to specify conditions and to access the properties of objects. The --- <em>JX</em>Template Generator gets its name from the embedded expression --- languages it supports, namely --- <a href="http://jakarta.apache.org/commons/jxpath">Apache <em>JX</em>Path</a> --- and <a href="http://jakarta.apache.org/commons/jexl">Apache --- <em>J</em>e<em>X</em>l</a>.</p> --- --- <p>To use the JXTemplate Generator, add a generator entry to your --- <a href="daisy:580">sitemap</a> with the <tt>src</tt> attribute set to --- <tt>org.apache.cocoon.generation.JXTemplateGenerator</tt>, for example like --- this:</p> --- --- <pre><map:generators> --- <map:generator label="content,data" --- logger="sitemap.generator.jx" name="jx" --- src="org.apache.cocoon.generation.JXTemplateGenerator"/> --- </map:generators> --- </pre> --- --- <h1>Expression Languages</h1> --- --- <p>The JXTemplate Generator supports two embedded expression languages: --- <a href="http://jakarta.apache.org/commons/jexl">Jexl</a> and --- <a href="http://jakarta.apache.org/commons/jxpath">JXPath</a>. Apache --- <a href="http://jakarta.apache.org/commons/jexl">Jexl</a> provides an extended --- version of the expression language of the --- <a href="http://java.sun.com/webservices/docs/1.0/tutorial/doc/JSTL.html">JSTL</a>. --- Apache <a href="http://jakarta.apache.org/commons/jxpath">JXPath</a> provides an --- interpreter of the <a href="http://www.w3.org/TR/xpath">XPath</a> expression --- language that can apply XPath expressions to graphs of Java objects of all --- kinds: JavaBeans, Maps, Servlet contexts, DOM etc, including mixtures thereof. --- </p> --- --- <p>Having an embedded expression language allows a page author to access an --- object using a simple syntax such as</p> --- --- <pre><site signOn="${accountForm.signOn}"> --- </pre> --- --- <p>Embedded Jexl expressions are contained in <tt>${}</tt>.</p> --- --- <p>Embedded JXPath expressions are contained in <tt>#{}</tt>.</p> --- --- <p>The referenced objects may be Java Beans, DOM, or JavaScript objects from a --- Flowscript. In addition, a special <tt>cocoon</tt> object providing access to --- the Cocoon <a href="daisy:518#FOM">FOM</a> is available as both a JXPath and --- Jexl variable in a template.</p> --- --- <p>The <tt>cocoon</tt> object contains the following properties:</p> --- --- <ul> --- <li><a href="daisy:518#request">request</a>: <br/> --- The current Cocoon request</li> --- <li><a href="daisy:518#session">session</a>: <br/> --- The user session associated with the current request</li> --- <li><a href="daisy:518#context">context</a>: <br/> --- The Cocoon context associated with the current request</li> --- <li><tt>parameters</tt>: <br/> --- A map containing the parameters passed to the generator in the pipeline</li> --- <li><a href="daisy:518#WebContinuation">continuation</a>: <br/> --- The current Web Continuation from your Flowscript</li> --- </ul> --- --- <p>Jexl Example:</p> --- --- <pre>The content type of the current request is ${cocoon.request.contentType} --- </pre> --- --- <p>JXPath Example:</p> --- --- <pre>The content type of the current request is #{$cocoon/request/contentType} --- </pre> --- --- <p>You would typically access the <tt>id</tt> of the Web Continuation:</p> --- --- <pre><form action="${cocoon.continuation.id}"> --- </pre> --- --- <p>You can also reach previous continuations via its <tt>parent</tt> property: --- </p> --- --- <pre><form action="${cocoon.continuation.parent.id}" > --- </pre> --- --- <p>or using an XPath expression:</p> --- --- <pre><form action="#{$cocoon/continuation/parent/id}" > --- </pre> --- --- <p>Deprecated Variables:</p> --- --- <p>The following variables are deprecated but still supported:</p> --- --- <ul> --- <li> --- <a href="file:/home/daisy/tmpdocimport/documentation/apidocs/org/apache/cocoon/environment/Request.html">org.apache.cocoon.environment.Request</a> --- <tt>request</tt>: <br/> --- The current Cocoon request (deprecated: use <tt>cocoon.request</tt> instead) --- </li> --- <li> --- <a href="file:/home/daisy/tmpdocimport/documentation/apidocs/org/apache/cocoon/environment/Session.html">org.apache.cocoon.environment.Session</a> --- <tt>session</tt>: <br/> --- The current user session (deprecated: use <tt>cocoon.session</tt> instead)</li> --- <li> --- <a href="file:/home/daisy/tmpdocimport/documentation/apidocs/org/apache/cocoon/environment/Context.html">org.apache.cocoon.environment.Context</a> --- <tt>context</tt>: <br/> --- The current context (deprecated: use <tt>cocoon.context</tt> instead)</li> --- <li> --- <a href="file:/home/daisy/tmpdocimport/documentation/apidocs/org/apache/cocoon/components/flow/WebContinuation.html">org.apache.cocoon.components.flow.WebContinuation</a> --- <tt>continuation</tt>: <br/> --- The current Web Continuation (deprecated: use <tt>cocoon.continuation</tt> --- instead)</li> --- </ul> --- --- <p class="note">When used inside flow, JXTemplate has access to Java and can --- therefore evaluate expressions like "java.util.Date()" or "java.util.HashMap()". --- This does <strong>NOT</strong> work when JXTemplates are used without flow. Some --- symptoms:<br/> --- [*<jx:out value="${java.util.Date()"/>*] results in [**]</p> --- --- <p class="note"><jx:formatDate value="${java.util.Date()}" --- pattern="yyyyMMdd"/> results in 'Cannot format given Object as a Date'</p> --- --- <h1>Parameters</h1> --- --- <h2>lenient-xpath</h2> --- --- <p>By default XPath evaluation throws an exception if the supplied XPath does --- not map to an existing property. This constraint can be relaxed by setting the --- parameter <tt>lenient-xpath</tt> to <tt>true</tt>. In the lenient mode --- evaluation simply returns null if the path maps to nothing.</p> --- --- <p>Example:</p> --- --- <pre> <map:match pattern="*.jx"> --- <map:generate type="jx" src="documents/{1}.jx"> --- <map:parameter name="lenient-xpath" value="true"/> --- </map:generate> --- <map:serialize type="xhtml"/> --- </map:match> --- </pre> --- --- <h1>Tags</h1> --- <p>The JXTemplate Generator tags are defined in the namespace</p> <pre>http://apache.org/cocoon/templates/jx/1.0 (565 equal lines skipped) Collections =========== Removed from collection: legacydocs Added to collection: cdocs-template