most recent version of Dojo 1.0 has a datatable control
<div dojoType="dijit.layout.ContentPane" sizeMin="50" sizeShare="50">
<div class="dataTable" dojoType="dojox.wire.demos.TableContainer"
jsId="dataTable" headers="Name,Location Type">
</div>
</div>
<div dojoType="dojo.data.ItemFileReadStore"
jsId="DataStore1"
url="countries.json">
</div>dataHolder = {
//Simple object definition to get all items and sort it
by the attribute
'type'.
request: {query: {name: "*"}, onItem: function(item,
req){}, sort:
[{attribute: "type"}]},
//Spot to store off data values as they're generated by
the declarative
binding.
result: null
};<div dojoType="dojox.wire.ml.Action"
trigger="searchButton"
triggerEvent="onClick">
<div dojoType="dojox.wire.ml.Invocation" object="dataTable"
method="clearTable"></div>
<div dojoType="dojox.wire.ml.Invocation" object="DataStore1"
method="fetch" parameters="dataHolder.request"></div></div>where
countries.json contains the following json formatted array{ identifier:
'name', items: [ { name:'Africa', type:'continent',
children:[{_reference:'Egypt'}, {_reference:'Kenya'},
{_reference:'Sudan'}] }, { name:'Egypt', type:'country' }, { name:'Kenya',
type:'country', children:[{_reference:'Nairobi'},
{_reference:'Mombasa'}] }, { name:'Nairobi', type:'city' }, {
name:'Mombasa', type:'city' }, { name:'Sudan', type:'country',
children:{_reference:'Khartoum'} }, { name:'Khartoum', type:'city' }, {
name:'Asia', type:'continent', children:[{_reference:'China'},
{_reference:'India'}, {_reference:'Russia'}, {_reference:'Mongolia'}] },
{ name:'China', type:'country' }, { name:'India', type:'country' }, {
name:'Russia', type:'country' }, { name:'Mongolia', type:'country' }, {
name:'Australia', type:'continent', population:'21 million',
children:{_reference:'Commonwealth of Australia'}}, { name:'Commonwealth of
Australia', type:'country', population:'21 million'}, { name:'Europe',
type:'continent', children:[{_reference:'Germany'}, {_reference:'France'},
{_reference:'Spain'}, {_reference:'Italy'}] }, { name:'Germany',
type:'country' }, { name:'France', type:'country' }, { name:'Spain',
type:'country' }, { name:'Italy', type:'country' }, { name:'North
America', type:'continent', children:[{_reference:'Mexico'},
{_reference:'Canada'}, {_reference:'United States of America'}] }, {
name:'Mexico', type:'country', population:'108 million', area:'1,972,550 sq
km', children:[{_reference:'Mexico City'}, {_reference:'Guadalajara'}] },
{ name:'Mexico City', type:'city', population:'19 million', timezone:'-6
UTC'}, { name:'Guadalajara', type:'city', population:'4 million',
timezone:'-6 UTC' }, { name:'Canada', type:'country', population:'33
million', area:'9,984,670 sq km', children:[{_reference:'Ottawa'},
{_reference:'Toronto'}] }, { name:'Ottawa', type:'city', population:'0.9
million', timezone:'-5 UTC'}, { name:'Toronto', type:'city',
population:'2.5 million', timezone:'-5 UTC' }, { name:'United States of
America', type:'country' }, { name:'South America', type:'continent',
children:[{_reference:'Brazil'}, {_reference:'Argentina'}] }, {
name:'Brazil', type:'country', population:'186 million' }, {
name:'Argentina', type:'country', population:'40 million' }]}Anyone feel up
to incorporating this into the dojo wrapper ftl/xml/struts-tag?
?
Martin-
----- Original Message -----
Wrom: QTIPWIGYOKSTTZRCLBDXRQBGJSNBOHMKHJYFMYXOEAIJJPHSC
To: "Struts Users Mailing List" <[email protected]>
Sent: Sunday, March 02, 2008 7:45 PM
Subject: Re: Qs about Ajax abilities in Struts 2
> Yes, it's completely viable with Struts 2, however, the majority of what
> you've described is client-side functionality. What you need is a good
> client-side library.
>
> I wouldn't approach this problem using the Struts 2 dojo/ajax tags *at
> all*. They're too limited, especially as they're without a datatable
> component and because you need to write javascript to bind these
> components together.
>
> I've used YUI to do similar to what you've described (see DataTable and
> TabView) [1]. It's incredible how simple it is. I'm certain Dojo 1.x
> will support it too, as too every other current-day rich-client
> library. You just need to look at these, and others, and choose which
> client-side architecture you prefer.
>
> Using struts 2 is the easy bit.
>
> [1] http://developer.yahoo.com/yui/
> [2] http://www.dojotoolkit.org/
>
> Karr, David wrote:
> > I've been out of the Struts loop for a long time now (some of you old
> > timers should remember me). I've been reading the docs in firehose mode
> > the last few days, but I have some questions about Ajax-related
> > capabilities in the latest release. I'd like to see if certain
> > combinations of features are viable, and any issues or guidelines
> > towards implementing those capabilities.
> >
> > I'd like to see a page with a data table and a tabbed panel. The data
> > in the table row would be populated from data fields in a tab. A button
> > on the table will add a new empty row to the table (there would also be
> > a "delete row" function).
> >
> > Below the data table is a tabbed panel, where the first tab and the last
> > tab are "static", with specific fields in those two tabs. When the "add
> > row" button on the table is pressed, it will add the data table row and
> > also dynamically add a tab to the tabbedpanel. Each of the added
> > "dynamic" tabs will all have the same fields, but with different values
> > associated with a "primary key".
> >
> > In the JSP, it would be nice if the "dynamic" tabs were rendered with
> > some sort of a repeat loop. Alternatively, a certain "maximum" number
> > of dynamic tabs could be unrendered initially, with local actions
> > causing them to be rendered (and populated).
> >
> > One of the tabs would have a "Submit" button which would submit all the
> > data entered in all the tabs. The action on that button is about the
> > only action that would cause a full page refresh. Everything else would
> > be local actions.
> >
> > So, is this viable in the latest Struts release? Are there any obvious
> > problems or issues I should expect to run into while implementing this?
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
> >
> >
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]