dev@jsftemplating.java.net

Re: JSFTemplating: Seamsupport was Enhancement #10: Dynamic table

From: Ken Paulsen <Ken.Paulsen_at_Sun.COM>
Date: Sun, 12 Aug 2007 14:05:31 -0700

Also, for table specific questions, you might get better answers on the
dev_at_woodstock.dev.java.net email alias. The woodstock table developer
is on that list (Dan). I 2nd the IRC suggestion, you can often get
faster responses there.

Good luck!

Ken

Imre Oßwald wrote:
> Padraig,
>
> I haven't had the chance to look "deeply" into woodstock yet, but
> Jason Lee (littlezoper on IRC) ( has at least played with it (see
> http://blogs.steeplesoft.com/2007/02/26/using-the-woodstock-sortable-table/
> ).
> When I played with the woodstock-table, i gathered my documentation
> from javadoc and sourcecode as at that time i did not find any
> "tutorials".
>
> I am usually getting most of the hints / help from IRC, so if you are
> able to, I would suggest that you join us (and others) at IRC (see
> https://jsftemplating.dev.java.net/irc.html ).
> For the filtering i guess you have to write your own helper, that will
> change the according properties on the "example"-entity in the
> entityQuery, also i think to have the database to do the sorting
> (instead of java) you probably have to supply your own helper for that
> too. Actually you are starting to make me want to write a
> seam-dataprovider.... :D (but as i wrote 1-2h/month at the moment)
>
> Have fun,
> Imre
>
>
> On 12.08.2007, at 10:03, Padraig Byrne wrote:
>
>> Imre,
>>
>> Thanks for reply.
>>
>> Current situation is I have seam, richfaces & facelets with entity
>> beans generated by seamgen
>>
>> but I like functionality of woodstock table (& some other
>> components), which uses dataprovider as backend for table as far as I
>> can see.
>> Woodstock lead me to investigate jsf templating which look very
>> similar to facelets but has tight woodstock integration from what I
>> can see
>>
>> seam gen generates beans which extend entityQuery beans & which I can
>> directly connect woodstock table & perform sort functionailty out of
>> the box but when I want o add filtering etc all the example use
>> helper classes which are based on dataprovider ( eg filtercriteria )
>>
>> I am trying to get a detailed understanding of this table &
>> dataproviders & compatibility with entity beans
>>
>> On woodstock table, sorting etc is there any detailed document on how
>> this works when filering sorting etc & what is the best forum to put
>> these questions ? ( Seem this is same team ?)
>>
>> I wil be working with very large datasets so performance & response
>> will be critical
>>
>> Thanks for pointer to look into query class in seam framework
>> package & any assistance is greatly appreciated & I will also share
>> my learning back to group
>>
>> Rgds,
>> Padraig.
>>
>> ----- Original Message ----
>> From: Imre Oßwald <ioss_at_mx.jevelopers.com>
>> To: dev_at_jsftemplating.dev.java.net
>> Sent: Saturday, August 11, 2007 2:38:00 AM
>> Subject: Re: JSFTemplating: Seamsupport was Enhancement #10: Dynamic
>> table
>>
>> Hi Padraig,
>>
>> (i started to "move" the subject if you do not mind)
>>
>> Jsftemplating will not working "seamlessly" with seam (or seam will
>> not work seamlessly with jsftemplating, either way) i am working on
>> making seam work seamlesserly :D with jsft, the problem at the moment
>> is, i have about 1-2h per month to do that right now, but i hope to
>> spend more time in the near future. Afaik we havent implemented the
>> cusomt tags of seam yet in jsftemplating, also seam "likes" richfaces
>> and ajax4jsf (I have a early patch for jsftemplating to make it work
>> at least somewhat with ajax4jsf, but its not in cvs yet, as i first
>> wanted to check more frameworks, so we can come up with a change to
>> the codebase that allows us to integrate most of them with
>> acceptable effort and minimal changes to the codebase).
>>
>> If you still ;) want to try seam (which i barely got working stable
>> without jsftemplating :D) with jsftemplating I would be pleased to
>> help you and try to fix the issues that will come up (or even better
>> we could fix them together).
>>
>> "OT": Concerning filtercriteria in seam, have you had a look at the
>> documentation of the "framework" package, the class Query (iirc)
>> supports paging, filtering and more quite well (its even possible to
>> "create" the query objects, without writing any code (if you do not
>> count xml-code as code ;) ). I guess if you use Query to get a list
>> of entities this should not be any different then doing it without seam.
>>
>> Feel free to continue this thread,
>>
>> Regards Imre
>> (qoob)
>>
>> On 10.08.2007, at 23:47, Padraig Byrne wrote:
>>
>>> Thanks for prompt reply.
>>>
>>> I'm tryiing to figure best way to connect to data. Examples refer
>>> to dataprovider and give sample addition classes to add filtering ,
>>> selection etc all based on dataprovider
>>> I have seam generated entity beans which I would like to use &
>>> which work fine for providing basic data & sorting but don't
>>> believe I can apply filtercriteria per examples & also trying to
>>> figure if selection as provide by seam datamodel will work with this.
>>>
>>> Is this type of area you are looking in ? & also will jsftemplating
>>> work "seamlessly" with seam ?
>>>
>>> Is this a facelets alternative ?
>>>
>>> Rgds,
>>> Padraig.
>>>
>>>
>>> ----- Original Message ----
>>> From: Karam Singh Badesha <Karam.Badesha_at_Sun.COM>
>>> To: dev_at_jsftemplating.dev.java.net
>>> Sent: Friday, August 10, 2007 10:30:35 PM
>>> Subject: Re: JSFTemplating: Enhancement #10: Dynamic table
>>>
>>>
>>> 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}"} ); />
>>>>>>
>>
>>
>>