COB-INF.bean-editor.docs.tasklist.xml Maven / Gradle / Ivy
The newest version!
<?xml version="1.0" encoding="iso-8859-1"?> <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <page xmlns:cinclude="http://apache.org/cocoon/include/1.0" > <content> <p> Let's look at the implementation of the <a href="../view/allTasks">view/allTasks</a> application page, which lists all tasks provided by the DatabaseFacade. </p> <p> The scenario is the following: <ol> <li>In Flowscript, access and query the DatabaseFacade</li> <li>Pass the data from Flowscript to a page which uses the JXTemplateGenerator to access it</li> <li>In the JXTemplate page, iterate over the data elements and display them</li> </ol> </p> <h2>Sitemap</h2> <p> Here's the first pipeline definition in sitemap, activated by the <em>view/allTasks</em> request: <cinclude:include element="xml-code" src="cocoon:/xml-element/bean-editor/sitemap.xmap/view"/> </p> <p> This causes the above request to call the <em>query_allTasks()</em> Flowscript function (Flowscript listing <a href="flowscript.html">here</a>). </p> <p> Later, the Flowscript will call the <em>internal/generate-view/taskList</em> pipeline to generate a view using the JXTemplateGenerator and the views/taskListView.xml page: <cinclude:include element="xml-code" src="cocoon:/xml-element/bean-editor/sitemap.xmap/genView"/> </p> <h2>Java beans to JXTemplate page</h2> <p> The following lines of Flowscript code implement the first two steps of our scenario, getting a List of TaskBean objects from the DatabaseFacade and passing it to the <em>taskList</em> pipeline. <pre class="code"> 0006 // Access java "database" facade object 0007 var db = Packages.org.apache.cocoon.samples.tour.beans.DatabaseFacade.getInstance(); ... 0010 function query_allTasks() { 0011 list = db.getTasks(); 0013 cocoon.sendPage("internal/generate-view/taskList", { 0014 title : "List of tasks", 0015 task : list, 0016 db : db 0017 }); </pre> As the taskList pipeline uses a JXTemplate generator, the corresponding page will have access to the variables passed with the <em>sendPage</em> call. </p> <p> The <em>db</em> object is also passed to the page, but it is only used to access its db.version field. </p> <p> We're not using continuations here (there's no <em>sendPageAndWait</em>), Flowscript serves only as a thin layer of glue between our Java objects and our JXTemplate view page. </p> <h2>JXTemplate page</h2> <p> Here's the JXtemplate page that generates the taskList view, using the <em>title</em>, <em>task</em> and <em>db</em> variables supplied by the above Flowscript code: <cinclude:include element="xml-code" src="cocoon:/xml-element/bean-editor/cocoon-app/views/taskListView.xml/page"/> </p> <p> Note the use of a <em><c:forEach></em> element, from the JXTemplate namespace, to iterate over members of the <em>task</em> collection. </p> <h2>That's it!</h2> <p> Let's summarize what happened here: <ol> <li>A request for <em>view/allTasks</em> comes in</li> <li> The <em>query_allTasks()</em> Flowscript function is called and uses the Java <em>DatabaseFacade</em> to retrieve a Java List of <em>TaskBean</em> objects. </li> <li> Flowscript uses the <em>cocoon.sendPage()</em> function to trigger the execution of a sitemap pipeline, passing to it some data as JavaScript variables. </li> <li> The pipeline uses the JXTemplate generator to dynamically insert data in an XML template document, generating one of our <page> documents. </li> <li> Our usual XML-to-HTML conversion transformation is used for final presentation. </li> </ol> This might seem complicated when explained in so much detail, but the interesting thing to note is that, once again, very little code must be written to make this work. And the whole thing stays very flexible and customizable. </p> </content> </page>
© 2015 - 2025 Weber Informatics LLC | Privacy Policy