Hello, We have prototyped some forms with Woody and Flow. It is impressive technology, particularly the binding framework.
We use Cayenne (similar to OJB) as our object layer to access our postgres database. It is not obvious to us how to use woody to implement a 'clickable list' of objects -- meaning a list of objects (actually object attributes) where clicking one of them takes the user to a form to edit that object. We've now realized that this 'clickable list' may not really be a job for woody. Even so, we would still like to take advantage of woody's powerful bindings. Moreover, while we could implement a 'clickable list' using the wd:action widgets inside a wd:repeater we would rather use hyperlinks than buttons -- which even more, we suppose, begs the question: why even use woody? (But, we would like to use one technique for all our dynamic data.) We would be interested in suggestions on implementing a 'clickable list' and also on techniques for identifying the clicked object. We had intended to use, as part of the solution, Cayenne's DataObject.objectid() method which (I believe) is guaranteed to be unique among objects in a given DataContext (simliar to OJB's Broker). Now however, looking at frameworks like struts, we wonder if we even need to use the objectid -- that there might be a more elegant way to identify the clicked object. Here is some of our prototype code which works as far as displaying the list of objects from the database via Cayenne but does not yet attempt to allow selection of one of the objects. Widget Definition ----------------- <?xml version = "1.0" encoding = "UTF-8"?> <wd:form xmlns:wd="http://apache.org/cocoon/woody/definition/1.0"> <wd:widgets> <wd:repeater id="kriCategoryList"> <wd:widgets> <wd:field id="kriCategoryName"> <wd:label>KRI Category Name</wd:label> <wd:datatype base="string"/> </wd:field> </wd:widgets> </wd:repeater> </wd:widgets> </wd:form> Bindings -------- <wb:context xmlns:wb="http://apache.org/cocoon/woody/binding/1.0" path="/" > <wb:repeater id="kriCategoryList" parent-path="." row-path="KRICategories" unique-row-id="globalID" unique-path="@id" > <wd:convertor datatype="long" /> --> <wb:on-bind> <wb:value id="kriCategoryName" path="@name" /> </wb:on-bind> </wb:repeater> </wb:context> Flow ---- function kriCategoryList(form) { form.load(ourApp()); form.showForm("kriCategoryList-pipeline"); // form.save(ourApp()); cocoon.sendPage("editingPage.html"); } Content ------- <html xmlns:wt="http://apache.org/cocoon/woody/template/1.0" xmlns:wi="http://apache.org/cocoon/woody/instance/1.0"> <head> <title>KRI Category List</title> </head> <body> <h1>Select a KRI Category</h1> <wt:form-template action="?continuation-id=#{$continuation/id}" method="POST"> <wt:widget id="kriCategoryList"/> <br/> <input type="submit"/> </wt:form-template> </body> </html> SiteMap ------- <map:match pattern="KRICategoryList.html"> <map:select type="request-method"> <!-- GET : start the flow for this screen --> <map:when test="GET"> <map:call function="woody"> <map:parameter name="function" value="kriCategoryList"/> <map:parameter name="form-definition" value="forms/kriCategoryList.wd"/> <map:parameter name="documentURI" value="docs/kriCategoryListTempData.xml"/> <map:parameter name="bindingURI" value="forms/kriCategoryList.wb"/> </map:call> </map:when> <!-- POST (form submission) : continue the flow --> <map:when test="POST"> <map:call continuation="{request-param:continuation-id}"/> </map:when> </map:select> </map:match> <map:match pattern="kriCategoryList-pipeline"> <map:generate src="docs/kriCategoryList.xml"/> <map:transform type="woody"/> <map:transform src="stylesheets/forms/woody-samples-styling.xsl"/> <map:serialize type="html"/> </map:match> --- Steve Steinitz ph +61 (0)2 9487 7215 Director Data Tactics Sydney, Australia www.datatactics.com.au Web Commerce Development Project Estimation and Planning Software Development MacOS X Support --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
