Hi Karam,
It needs to be a List<List<HashTable>>. What you have will probably
work, if you specify:
<sun:tableRowGroup data={"$pageSession{listOfHashTable}"} ... >
Where $pageSession{listOfHashTable} is the output of your handler. The
{} around the ""'s will cause JSFTemplating to create a List to contain
your List of HashTable... which is what the "data" property requires.
Ken
Karam Singh Badesha wrote:
> So I could have a list of object Hashtable?
>
> I have the following:
>
> @Handler(id="getTable1Data",
> output={
> @HandlerOutput(name="table1Data", type=java.util.List.class)
> })
> public static void fetchTable1Data(HandlerContext context) {
> Hashtable numbers1 = new Hashtable();
> Hashtable numbers2 = new Hashtable();
> numbers1.put("one", new Integer(1));
> numbers1.put("two", new Integer(2));
> numbers1.put("three", new Integer(3));
> numbers2.put("one", new Integer(1));
> numbers2.put("two", new Integer(2));
> numbers2.put("three", new Integer(3));
> // Do business logic...
> List t1Data = new ArrayList();
> t1Data.add(0,numbers1);
> t1Data.add(1,numbers2);
> // Set the output.
> context.setOutputValue("table1Data", t1Data);
> }
>
> Is this wrong?
>
> thanks,
> Karam
>
> Ken Paulsen wrote:
>> Sorry!
>>
>> Ken
>>
>> Karam Singh Badesha wrote:
>>> Ken,
>>> I think you forgot to add the file. Please attach the file and send
>>> email again.
>>>
>>> thanks
>>> Karam
>>>
>>> Ken Paulsen wrote:
>>>>
>>>> Hi Karam,
>>>>
>>>> Attached is an example table.jsf file that I have used to try out a
>>>> few basic things. All the data is defined in the .jsf file so, it
>>>> makes it simple to see what is required. There are additional
>>>> features that are implemented as well that you may not need.
>>>> Anyway, take a look and feel free to ask questions. One thing I
>>>> will point out is that the "data" property for the TableRowGroup
>>>> factory expects a List of List of Object (List<List<Object>>)... in
>>>> the example the "Obect" type is "Map". The outer list is used to
>>>> allow multiple sources to provide row information. The inner list
>>>> contains rows. The Object is data for the row.
>>>>
>>>> Good luck!
>>>>
>>>> Ken
>>>>
>>>> Karam Singh Badesha wrote:
>>>>> Hi,
>>>>> Can someone please show some example handler code with only 2rows
>>>>> and 2cols without any input? I just want to see how to fill in the
>>>>> data for table. Your help is greatly appreciated. I looked at some
>>>>> admingui example code but I still can't get the basics about how
>>>>> to fill the table.
>>>>>
>>>>> thanks
>>>>> Karam
>> ------------------------------------------------------------------------
>>
>> <sun:page>
>> <sun:html>
>> <!beforeCreate
>>
>> ######################
>> ## CREATE DATA ##
>> ######################
>>
>> // Row 1
>> createMap(result=>$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");
>> // Row 4
>> createMap(result=>$attribute{row4});
>> mapPut(map="$attribute{row4}" key="a" value="Row4 Col A");
>> mapPut(map="$attribute{row4}" key="b" value="Row4 Col B");
>> mapPut(map="$attribute{row4}" key="c" value="Row4 Col C");
>> // Row 5
>> createMap(result=>$attribute{row5});
>> mapPut(map="$attribute{row5}" key="a" value="Row5 Col A");
>> mapPut(map="$attribute{row5}" key="b" value="Row5 Col B");
>> mapPut(map="$attribute{row5}" key="c" value="Row5 Col C");
>>
>> // Create List of Map (List of the rows)
>> setPageSessionAttribute(key='listOfRows'
>> value={"$attribute{row1}" "${row2}" "${row3}" "${row4}" "${row5}"} );
>>
>> // Row 1 (again, different obj.)
>> createMap(result=>$attribute{rowA});
>> mapPut(map="$attribute{rowA}" key="selected"
>> value="$boolean{false}");
>> 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="selected"
>> value="$boolean{false}");
>> 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="selected"
>> value="$boolean{false}");
>> mapPut(map="$attribute{rowC}" key="foo" value="Other Obj: C - foo");
>> mapPut(map="$attribute{rowC}" key="bar" value="Other Obj: C - bar");
>> // Row 4 (again, different obj.)
>> createMap(result=>$attribute{rowD});
>> mapPut(map="$attribute{rowD}" key="selected"
>> value="$boolean{false}");
>> mapPut(map="$attribute{rowD}" key="foo" value="Other Obj: D - foo");
>> mapPut(map="$attribute{rowD}" key="bar" value="Other Obj: D - bar");
>> // Row 5 (again, different obj.)
>> createMap(result=>$attribute{rowE});
>> mapPut(map="$attribute{rowE}" key="selected"
>> value="$boolean{false}");
>> mapPut(map="$attribute{rowE}" key="foo" value="Other Obj: E - foo");
>> mapPut(map="$attribute{rowE}" key="bar" value="Other Obj: E - bar");
>>
>> // Create List of Map (List of more rows)
>> setPageSessionAttribute(key='moreRows' value={"$attribute{rowA}"
>> "${rowB}" "${rowC}", "${rowD}", "${rowE}"});
>> />
>>
>> <sun:head id="head" />
>> <sun:body>
>> <sun:form id="form">
>> <sun:alert id="alert1" summary="" details="" />
>> "<style type="text/css">\
>> .wideTable table {width: 100%}\
>> </style>
>>
>> <sun:markup tag="div" styleClass="wideTable">
>>
>> <sun:propertySheet id="ps1">
>> <sun:propertySheetSection id="pss1">
>> <sun:property id="prop1" overlapLabel="#{true}">
>>
>> <sun:table style="width:100%" id="basicTable" title="Test
>> Table" deselectMultipleButton="#{true}"
>> selectMultipleButton="#{true}" paginateButton="#{true}"
>> paginationControls="#{true}">
>> <!facet actionsTop>
>> <sun:button text="Delete">
>> <!command
>>
>> getUIComponent(clientId="form:ps1:pss1:prop1:basicTable:rowGroup1",
>> component=>$attribute{trg});
>> getSelectedTableRowKeys(tableRowGroup="${trg}"
>> rowKeys=>$attribute{rowKeys});
>> deleteTableRows(tableRowGroup="${trg}"
>> rowKeys="${rowKeys}");
>> commitTableRowGroup(tableRowGroup="${trg}");
>> />
>> </sun:button>
>> </facet>
>>
>> // NOTE: The {} on the outside of the ""'s create a List
>> of the List(s) of rows
>> <sun:tableRowGroup id="rowGroup1"
>> data={"$pageSession{listOfRows}", "$pageSession{moreRows}"}
>> sourceVar="td" selected="#{td.value.selected}">
>> <sun:tableColumn headerText="Selected" selectId="selCb"
>> id="selcol" sort="#{td.value.selected}">
>> <sun:checkbox id="selCb" value="#{td.value.selected}" />
>> </sun:tableColumn>
>> <sun:tableColumn headerText="Col 1" id="col1">
>> <staticText id="col1St" value="Val: #{td.value.a}" />
>> <event>
>> <!beforeEncode
>> setAttribute(key="more" value="$attribute{more}A");
>> setAttribute(key="coolList"
>> value={"$attribute{more}", "b", "c"});
>> />
>> </event>
>> <foreach key="cool" list="#{coolList}">
>> "<br />
>> <sun:hyperlink
>> url="http://www.google.com/search?q=#{cool}" text="Search google for
>> '#{cool}'" />
>> </foreach>
>> </sun:tableColumn>
>> <sun:tableColumn headerText="Col 2" id="col2">
>> <staticText id="col2St" value="#{td.value.foo}" />
>> </sun:tableColumn>
>> </sun:tableRowGroup>
>> </sun:table>
>> </sun:property>
>> </sun:propertySheetSection>
>> </sun:propertySheet>
>> </sun:markup>
>> </sun:form>
>> </sun:body>
>> </sun:html>
>> </sun:page>
>>