Hi Padraig,
What Karam said is correct. I want to add a couple things also...
* JSFTemplating supports some of the Facelets syntax such as
ui:composition, ui:include, ui:define, etc.
* Seam may work with JSFTemplating... I've heard some users report
success with parts of Seam, I have not yet tested it completely myself,
although I plan to.
Good luck!
Ken
Karam Singh Badesha wrote:
> Padraig,
> The sorting functionality is part of woodstock components. Multiple
> column sorting is also default on the tables. JSFTemplating is not
> doing anything extra in that area. It does provide some additional
> ways of providing data to the table, which in my opinion requires less
> coding.
>
> -Karam
>
> Padraig Byrne wrote:
>> Not sure of etiquette here so apologoes if replying in this manner is
>> not allowed
>>
>> I am currently evaluating woodstock fo ruse with seam & facelets but
>> jsf templating look very interesting.
>>
>> Does this feature support muti column sorting in a datatable ?
>>
>> Rgds,
>> Padraig.
>>
>> ----- Original Message ----
>> From: Ken Paulsen <Ken.Paulsen_at_Sun.COM>
>> To: dev_at_jsftemplating.dev.java.net
>> Sent: Friday, August 10, 2007 10:00:09 PM
>> Subject: Re: JSFTemplating: Enhancement #10: Dynamic table
>>
>>
>> Hi Karam,
>>
>> Yes, I believe it is part of JSFT now so you will not need that .jar
>> file. JSFT has com.sun.jsftemplating.component.dataprovider.*. If
>> you remove it and still have problems let me know.
>>
>> Thanks!
>>
>> Ken
>>
>> Karam Singh Badesha wrote:
>>
>>> Ken,
>>> Remember some time you have sent me a jar file
>>> "MultipleDataList.jar" or something like that. Is that part of
>>> jsftemplating now? Just asking so that I can go ahead and remove it
>>> after I pick up latest jsftemplating build.
>>>
>>> thanks
>>> Karam
>>>
>>> Ken Paulsen wrote:
>>>
>>>> I forgot the attachment... here it is.
>>>>
>>>> ken
>>>>
>>>> Ken Paulsen wrote:
>>>>
>>>>> Hi Karam,
>>>>>
>>>>> I am very sorry for my slow response time lately. I had a
>>>>> conference then vacation, then lots of email. :(
>>>>>
>>>>> I just spent some time implementing this feature. Attached is a
>>>>> sample .jsf page which includes all the data in the page. You
>>>>> (obviously) would want to retrieve this from your database,
>>>>> backend logic, or managed bean instead. However, I think it
>>>>> clearly shows how to use the component.
>>>>>
>>>>> The table is the same. The table row group has a new name, the
>>>>> same old properties, and all the column properties. The column
>>>>> properties are prefixed with "column". All properties supported
>>>>> by the Woodstock "tableColumn" component should work. Each column
>>>>> property must be specified as a List (this is done in the .jsf
>>>>> page using {"list element #1", "list element #2", ...} -- however,
>>>>> you can use a #{} expression to resolve to your data which must be
>>>>> a List). There is 1 additional property called "columnValue".
>>>>> This also must be a List which contains the content for each
>>>>> column. Only staticText is supported.
>>>>>
>>>>> Let me know if you have any questions or problems! You will need
>>>>> to checkout/build JSFTemplating to get this feature... or wait
>>>>> until tomorrow to get the nightly build.
>>>>>
>>>>> Thanks!
>>>>>
>>>>> Ken
>>>>>
>>>>> Karam Singh Badesha wrote:
>>>>>
>>>>>> Ken,
>>>>>> Any status?
>>>>>>
>>>>>> thanks
>>>>>> Karam
>>>>>>
>>>>>> Ken Paulsen wrote:
>>>>>>
>>>>>>> Hi Karam,
>>>>>>>
>>>>>>> I'm sorry I haven't made any progress. I will make an effort to
>>>>>>> get something for you to look at this week.
>>>>>>>
>>>>>>> Ken
>>>>>>>
>>>>>>> Karam.Badesha_at_Sun.COM wrote:
>>>>>>>
>>>>>>>> Ken,
>>>>>>>> Any updates?
>>>>>>>>
>>>>>>>> thanks
>>>>>>>> -Karam
>>>>>>>>
>>>>>>>> Ken Paulsen wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>>> The foreach that I currently have is a component itself. So it
>>>>>>>>> won't create multiple TableColumn components. Also the tree
>>>>>>>>> doesn't allow non-tree UIComponents inside it.
>>>>>>>>>
>>>>>>>>> If we add a foreach that is executed during the creation time,
>>>>>>>>> then yes... it would work. In JSFT, it wouldn't be too hard to
>>>>>>>>> do this since the descriptors (LayoutElement) already exist
>>>>>>>>> for looping, they'd just have to be used during the tree
>>>>>>>>> creation... which amounts to 1 extra condition. We'd probably
>>>>>>>>> need a flag indicating that it is intended for tree-creation
>>>>>>>>> time... or perhaps a subclass of the existing while/foreach
>>>>>>>>> layoutelements.
>>>>>>>>>
>>>>>>>>> Ken
>>>>>>>>>
>>>>>>>>> Imre Oßwald wrote:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> Couldn't that be done with some kind of foreach? (I think i
>>>>>>>>>> have done that in facelets that way)
>>>>>>>>>>
>>>>>>>>>> Imre
>>>>>>>>>>
>>>>>>>>>> On 04.07.2007, at 03:17, Karam Singh Badesha wrote:
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>> Ok great.
>>>>>>>>>>>
>>>>>>>>>>> thanks
>>>>>>>>>>> Karam
>>>>>>>>>>>
>>>>>>>>>>> Ken Paulsen wrote:
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>> I think I have enough to go on. I'm going to try to make
>>>>>>>>>>>> this generic and put it in the JSFT code. Although when I
>>>>>>>>>>>> get into it, I may change my mind. ;)
>>>>>>>>>>>>
>>>>>>>>>>>> Thanks!
>>>>>>>>>>>>
>>>>>>>>>>>> Ken
>>>>>>>>>>>>
>>>>>>>>>>>> Karam Singh Badesha wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>> Ken,
>>>>>>>>>>>>> This should be fine. Let me know if you are going to
>>>>>>>>>>>>> deliver this directly to the jsftemplating repository or
>>>>>>>>>>>>> release as separate jar file. I am out of the office until
>>>>>>>>>>>>> July11 so might not be able to respond any questions that
>>>>>>>>>>>>> you send later. If there is anything else you want to
>>>>>>>>>>>>> know, please let me know now.
>>>>>>>>>>>>>
>>>>>>>>>>>>> thanks
>>>>>>>>>>>>> Karam
>>>>>>>>>>>>>
>>>>>>>>>>>>> Ken Paulsen wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>> Hi Karam,
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Supporting the attributes you need on the column could
>>>>>>>>>>>>>> look something like this:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> <sun:table ...>
>>>>>>>>>>>>>> <sun:dynamicColumnTableRowGroup data="#{dataOnly}"
>>>>>>>>>>>>>> columnId="#{listOfIds}"
>>>>>>>>>>>>>> columnHeaderText="#{listOfHeaderText}"
>>>>>>>>>>>>>> columnFooterText="#{listOfFooterText}"
>>>>>>>>>>>>>> columnRowHeader="#{listOf...}"
>>>>>>>>>>>>>> columnSort="#{listOf...}"
>>>>>>>>>>>>>> columnAlign="#{listOf...}"
>>>>>>>>>>>>>> columnWidth="#{listOf...}"
>>>>>>>>>>>>>> columnSpacerColumn="#{listOf...}"
>>>>>>>>>>>>>> [TableRowGroup properties here]
>>>>>>>>>>>>>> />
>>>>>>>>>>>>>> </sun:table>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> It is necessary to pass in a List of values because each
>>>>>>>>>>>>>> column needs a value for each of these properties.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> There are other ways (including passing in a data
>>>>>>>>>>>>>> structure that contains all the info in one EL
>>>>>>>>>>>>>> expression), I'd like to know what you'd prefer. I'd also
>>>>>>>>>>>>>> probably want to support all the other TRG properties to
>>>>>>>>>>>>>> make it generally useful.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Ken
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Karam Singh Badesha wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Ken,
>>>>>>>>>>>>>>> Actually TableRowGroup is ok to stay on the jsf page,
>>>>>>>>>>>>>>> all I need is a way to pass the various columns
>>>>>>>>>>>>>>> (tableColumn) to the page. Currently on tableColumn I
>>>>>>>>>>>>>>> only use following properties:
>>>>>>>>>>>>>>> id headerText
>>>>>>>>>>>>>>> footerText
>>>>>>>>>>>>>>> rowHeader
>>>>>>>>>>>>>>> sort
>>>>>>>>>>>>>>> align
>>>>>>>>>>>>>>> width
>>>>>>>>>>>>>>> spacerColumn
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> In the following example:
>>>>>>>>>>>>>>> <sun:table ...>
>>>>>>>>>>>>>>> <sun:dynamicColumnTableRowGroup data="#{dataOnly}"
>>>>>>>>>>>>>>> columnVisible="#{listOfVisibleValuesOneForEachColumn}"
>>>>>>>>>>>>>>> columnSortIcon="#{listOfSortIconValuesOneForEachColumn}"
>>>>>>>>>>>>>>> ...
>>>>>>>>>>>>>>> [TableRowGroup properties here] />
>>>>>>>>>>>>>>> </sun:table>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> What does columnVisible and columnSortIcon do? In this
>>>>>>>>>>>>>>> approach where do I specify the columnHeaders? If this
>>>>>>>>>>>>>>> approach is straight forward and I can get the column
>>>>>>>>>>>>>>> headers etc from a resource file, its fine with me.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> thanks
>>>>>>>>>>>>>>> Karam
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Ken Paulsen wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Hi Karam,
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> We need to work out what tableData's data structure
>>>>>>>>>>>>>>>> looks like. The table component could have all it's
>>>>>>>>>>>>>>>> properties as as it normally does (no need to worry
>>>>>>>>>>>>>>>> about them). However, you're hiding the tableRowGroup
>>>>>>>>>>>>>>>> and tableColumn components... so they'll need to be
>>>>>>>>>>>>>>>> created from the data.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> TableRowGroup supports the following properties:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> tableDataSorter
>>>>>>>>>>>>>>>> onDblClick
>>>>>>>>>>>>>>>> onKeyPress
>>>>>>>>>>>>>>>> sourceData
>>>>>>>>>>>>>>>> aboveColumnFooter
>>>>>>>>>>>>>>>> extraFooterHtml
>>>>>>>>>>>>>>>> onKeyUp
>>>>>>>>>>>>>>>> onMouseUp
>>>>>>>>>>>>>>>> extraHeaderHtml
>>>>>>>>>>>>>>>> footerText
>>>>>>>>>>>>>>>> align
>>>>>>>>>>>>>>>> selectMultipleToggleButton
>>>>>>>>>>>>>>>> onClick
>>>>>>>>>>>>>>>> groupToggleButton
>>>>>>>>>>>>>>>> toolTip
>>>>>>>>>>>>>>>> onMouseDown
>>>>>>>>>>>>>>>> tableDataFilter
>>>>>>>>>>>>>>>> multipleColumnFooters
>>>>>>>>>>>>>>>> rows
>>>>>>>>>>>>>>>> sourceVar
>>>>>>>>>>>>>>>> valign
>>>>>>>>>>>>>>>> first
>>>>>>>>>>>>>>>> onMouseOut
>>>>>>>>>>>>>>>> multipleTableColumnFooters
>>>>>>>>>>>>>>>> onMouseOver
>>>>>>>>>>>>>>>> onMouseMove
>>>>>>>>>>>>>>>> emptyDataMsg
>>>>>>>>>>>>>>>> selected
>>>>>>>>>>>>>>>> collapsed
>>>>>>>>>>>>>>>> visible
>>>>>>>>>>>>>>>> aboveColumnHeader
>>>>>>>>>>>>>>>> onKeyDown
>>>>>>>>>>>>>>>> headerText
>>>>>>>>>>>>>>>> styleClasses
>>>>>>>>>>>>>>>> aboveColumnHeader
>>>>>>>>>>>>>>>> onKeyDown
>>>>>>>>>>>>>>>> headerText
>>>>>>>>>>>>>>>> styleClasses
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> TableRowGroup also supports these facets:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> header
>>>>>>>>>>>>>>>> footer
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> TableColumn supports these properties:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> spacerColumn
>>>>>>>>>>>>>>>> width
>>>>>>>>>>>>>>>> onDblClick
>>>>>>>>>>>>>>>> sort
>>>>>>>>>>>>>>>> selectedId
>>>>>>>>>>>>>>>> onKeyPress
>>>>>>>>>>>>>>>> severity
>>>>>>>>>>>>>>>> rendered
>>>>>>>>>>>>>>>> rowHeader
>>>>>>>>>>>>>>>> extraTableFooterHtml
>>>>>>>>>>>>>>>> extraFooterHtml
>>>>>>>>>>>>>>>> onKeyUp
>>>>>>>>>>>>>>>> onMouseUp
>>>>>>>>>>>>>>>> styleClass
>>>>>>>>>>>>>>>> descending
>>>>>>>>>>>>>>>> embeddedActions
>>>>>>>>>>>>>>>> height
>>>>>>>>>>>>>>>> extraHeaderHtml
>>>>>>>>>>>>>>>> align
>>>>>>>>>>>>>>>> footerText
>>>>>>>>>>>>>>>> scope
>>>>>>>>>>>>>>>> style
>>>>>>>>>>>>>>>> sortImageURL
>>>>>>>>>>>>>>>> onClick
>>>>>>>>>>>>>>>> sortIcon
>>>>>>>>>>>>>>>> toolTip
>>>>>>>>>>>>>>>> onMouseDown
>>>>>>>>>>>>>>>> alignKey
>>>>>>>>>>>>>>>> tableFooterText
>>>>>>>>>>>>>>>> valign
>>>>>>>>>>>>>>>> noWrap
>>>>>>>>>>>>>>>> onMouseOut
>>>>>>>>>>>>>>>> onMouseOver
>>>>>>>>>>>>>>>> emptyCell
>>>>>>>>>>>>>>>> visible
>>>>>>>>>>>>>>>> onMouseOut
>>>>>>>>>>>>>>>> onMouseOver
>>>>>>>>>>>>>>>> onMouseMove
>>>>>>>>>>>>>>>> emptyCell
>>>>>>>>>>>>>>>> visible
>>>>>>>>>>>>>>>> onKeyDown
>>>>>>>>>>>>>>>> headerText
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> TableColumn defines these facets:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> footer
>>>>>>>>>>>>>>>> header
>>>>>>>>>>>>>>>> tableFooter
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> So as you can see, the data structure is non-trivial.
>>>>>>>>>>>>>>>> However, it may not be as bad as it seems either. If we
>>>>>>>>>>>>>>>> can agree to not try to generate TableRowGroup, we can
>>>>>>>>>>>>>>>> leave its definition in the .jsf file. I don't think it
>>>>>>>>>>>>>>>> adds a lot of value to try to eliminate it. As for all
>>>>>>>>>>>>>>>> the properties on TableColumn... we could decide to
>>>>>>>>>>>>>>>> support only a subset. And/or we could create a naming
>>>>>>>>>>>>>>>> pattern to cause the factory to apply the values
>>>>>>>>>>>>>>>> correctly -- this is made more difficult, however, b/c
>>>>>>>>>>>>>>>> there are multiple TableColumns and the values may vary
>>>>>>>>>>>>>>>> between the TableColumns.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> So we need to know what properties will be supported
>>>>>>>>>>>>>>>> directly by your proposed "data" property (if any), and
>>>>>>>>>>>>>>>> which will require additional properties in the jsf
>>>>>>>>>>>>>>>> file delegate. For example:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> <sun:table ...>
>>>>>>>>>>>>>>>> <sun:dynamicColumnTableRowGroup
>>>>>>>>>>>>>>>> data="#{dataPlusPropertiesForAllTableColumns}"
>>>>>>>>>>>>>>>> [tableRowGroup properties here] />
>>>>>>>>>>>>>>>> </sun:table>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> OR:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> <sun:table ...>
>>>>>>>>>>>>>>>> <sun:dynamicColumnTableRowGroup data="#{dataOnly}"
>>>>>>>>>>>>>>>> columnVisible="#{listOfVisibleValuesOneForEachColumn}"
>>>>>>>>>>>>>>>> columnSortIcon="#{listOfSortIconValuesOneForEachColumn}"
>>>>>>>>>>>>>>>> ...
>>>>>>>>>>>>>>>> [TableRowGroup properties here] />
>>>>>>>>>>>>>>>> </sun:table>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> As you can see, the first approach requires a complex
>>>>>>>>>>>>>>>> data structure that you must populate. The 2nd approach
>>>>>>>>>>>>>>>> requires you to create the same order of complexity,
>>>>>>>>>>>>>>>> however, it is distributed among multiple List objects
>>>>>>>>>>>>>>>> which contain the properties to set for each column.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> What do you think?
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> A 1-off solution wouldn't have to be so generic and
>>>>>>>>>>>>>>>> could be more specific to your data and needs. You
>>>>>>>>>>>>>>>> could use either the "binding" attribute, or a custom
>>>>>>>>>>>>>>>> factory (like above), but it would allow to only do the
>>>>>>>>>>>>>>>> work you need for your use case.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Ken
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Karam Singh Badesha wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Here is example of how it might look like in .jsf file:
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> <sun:table data="#{pageSession.tableData}"
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> .../>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> tableData will have all the column tag information and
>>>>>>>>>>>>>>>>> in the .jsf page there will be no column tags. Please
>>>>>>>>>>>>>>>>> suggest a way to take care of this. It is not really
>>>>>>>>>>>>>>>>> my app specific, it can be used by anyone.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> thanks
>>>>>>>>>>>>>>>>> Karam
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Karam Singh Badesha wrote:
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Ken,
>>>>>>>>>>>>>>>>>> Here is an example of what I am trying to do:
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Right now in the .jsf page I have to list the column
>>>>>>>>>>>>>>>>>> tag with header etc. I have the situation where I
>>>>>>>>>>>>>>>>>> have drop down boxes and depending upon different
>>>>>>>>>>>>>>>>>> selections, number of columns and column headers
>>>>>>>>>>>>>>>>>> could change. And I want the control to be defined in
>>>>>>>>>>>>>>>>>> the Resources file, etc number of columns, column
>>>>>>>>>>>>>>>>>> headers etc. I am not sure how it will work myself,
>>>>>>>>>>>>>>>>>> as the jsf code is changing (when number of columns
>>>>>>>>>>>>>>>>>> change). I think when we talked last time, you
>>>>>>>>>>>>>>>>>> suggested that I somehow create the table object in
>>>>>>>>>>>>>>>>>> java code (handler) and pass it to the page. What do
>>>>>>>>>>>>>>>>>> you suggest? Let me know if this is clear or not.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> thanks
>>>>>>>>>>>>>>>>>> Karam
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Ken Paulsen wrote:
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> Hi Karam,
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> I can look into doing this... however, after reading
>>>>>>>>>>>>>>>>>>> the issue more closely, I need some more information
>>>>>>>>>>>>>>>>>>> from you. How do you want to specify the table
>>>>>>>>>>>>>>>>>>> columns from the page?
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> TableColumns typically have children, so they'd also
>>>>>>>>>>>>>>>>>>> have to be created. Do you want those to just be
>>>>>>>>>>>>>>>>>>> staticText? Or do you want control over what type
>>>>>>>>>>>>>>>>>>> they are also? Which TableColumn attribute do you
>>>>>>>>>>>>>>>>>>> want control over? Perhaps you can provide an
>>>>>>>>>>>>>>>>>>> example of what you'd like it to look like in the
>>>>>>>>>>>>>>>>>>> .jsf file?
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> After looking at this more closely, I suspect this
>>>>>>>>>>>>>>>>>>> may end up being custom for your needs. However, if
>>>>>>>>>>>>>>>>>>> I can keep it generic and useful for others as well,
>>>>>>>>>>>>>>>>>>> I will.
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> Ken
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> Karam Singh Badesha wrote:
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> Hi Ken,
>>>>>>>>>>>>>>>>>>>> Is it possible to get a solution for issue #10 in
>>>>>>>>>>>>>>>>>>>> jsftemplating? I really need some solution for this
>>>>>>>>>>>>>>>>>>>> so that create dynamic tables. Please let me know.
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> thanks
>>>>>>>>>>>>>>>>>>>> Karam
>>>>>>>>>>>>>>>>>>>>
>>>> ------------------------------------------------------------------------
>>>>
>>>>
>>>> $attribute{row1}); mapPut(map="$attribute{row1}" key="a"
>>>> value="Row1 Col A"); mapPut(map="$attribute{row1}" key="b"
>>>> value="Row1 Col B"); mapPut(map="$attribute{row1}" key="c"
>>>> value="Row1 Col C"); // Row 2 createMap(result=>$attribute{row2});
>>>> mapPut(map="$attribute{row2}" key="a" value="Row2 Col A");
>>>> mapPut(map="$attribute{row2}" key="b" value="Row2 Col B");
>>>> mapPut(map="$attribute{row2}" key="c" value="Row2 Col C"); // Row 3
>>>> createMap(result=>$attribute{row3}); mapPut(map="$attribute{row3}"
>>>> key="a" value="Row3 Col A"); mapPut(map="$attribute{row3}" key="b"
>>>> value="Row3 Col B"); mapPut(map="$attribute{row3}" key="c"
>>>> value="Row3 Col C"); // Create List of Map (List of the rows)
>>>> setAttribute(key='listOfRows' value={"$attribute{row1}" "${row2}"
>>>> "${row3}"} ); // Row 1 (again, different obj.)
>>>> createMap(result=>$attribute{rowA}); mapPut(map="$attribute{rowA}"
>>>> key="foo" value="Other Obj: A - foo");
>>>> mapPut(map="$attribute{rowA}" key="bar" value="Other Obj: A -
>>>> bar"); // Row 2 (again, different obj.)
>>>> createMap(result=>$attribute{rowB}); mapPut(map="$attribute{rowB}"
>>>> key="foo" value="Other Obj: B - foo");
>>>> mapPut(map="$attribute{rowB}" key="bar" value="Other Obj: B -
>>>> bar"); // Row 3 (again, different obj.)
>>>> createMap(result=>$attribute{rowC}); mapPut(map="$attribute{rowC}"
>>>> key="foo" value="Other Obj: C - foo");
>>>> mapPut(map="$attribute{rowC}" key="bar" value="Other Obj: C -
>>>> bar"); // Create List of Map (List of more rows)
>>>> setAttribute(key='moreRows' value={"$attribute{rowA}" "${rowB}"
>>>> "${rowC}"} ); />
>>>>