Hi!
Thanks for your answer.
Let me try to describe my problem. I'm trying to build a datatable
with dynamic columns (additionally to some static columns). All information for
the datatable-creation is stored in a xml-file. It's not a big deal
building these dynamic colums with the right header but to fill it with content
I have to call a getter with a parameter.
In my particular case:
taskInstance.getVariable('variable_name');
Ok ... and that's my problem ...
Any suggestion?
Thanks,
Harry
-----Ursprüngliche Nachricht-----
Von: Simon Kitching [mailto:[EMAIL PROTECTED]
Gesendet: Montag, 12. Dezember 2005 21:35
An: MyFaces Discussion
Betreff: Re: datatable - parameter passing - workaround?
Hi,
The rowIndex value changes when the enclosing table iterates over the
DataModel. For example, when the table is *rendering*, it does:
for(int index=0; ; ++index) {
dataModel.setRowIndex(index);
if (!dataModel.isRowAvailable)
break;
Object o = dataModel.getRowData();
// render a row for object o
}
dataModel.setRowIndex(-1);
It does similar things during the "applyRequestValues" and "updateModel"
phases. In particular, any listeners (including action methods) on the
component which fire during these steps can assume that the
rowIndex/rowData point to the relevant row/object *at the time the
listener is invoked*. However the rowIndex is obviously not relevant
outside of the listener callbacks.
I can't see what you are trying to achieve with your code below. Maybe
you could describe the problem you're trying to solve?
Regards,
Simon
Harald Müller wrote:
>
> List contentList = new ArrayList();
> for (int i = 0 ; i<10;i++) {
> contentList.add("row " + i);
> }
> DataModel content = new ListDataModel(contentList);
> hdt.setValue(content);
>
>
> The console-output looks like:
>
> [STDOUT] >>>>>>>>>> ==> ROWCOUNT 2
> [STDOUT] >>>>>>>>>> ==> ROWINDEX 0
> [STDOUT] >>>>>>>>>> ==> WRAPPEDDATA [EMAIL PROTECTED], [EMAIL PROTECTED]
> [STDOUT] >>>>>>>>>> ==> ROWDATA [EMAIL PROTECTED]
> [STDOUT] >>>>>>>>>> ==> ROWCOUNT 2
> [STDOUT] >>>>>>>>>> ==> ROWINDEX 0
> [STDOUT] >>>>>>>>>> ==> WRAPPEDDATA [EMAIL PROTECTED], [EMAIL PROTECTED]
> [STDOUT] >>>>>>>>>> ==> ROWDATA [EMAIL PROTECTED]
>
> As you can see there are 2 elements (wrappeddata) but the rowindex is not
> incremented during the iteration ... so I always get the first element/object
> back by using 'content.getRowData()'.
>
> What am I doing wrong?
>
> Thanks,
> Harry
>
>
>
> -----Ursprüngliche Nachricht-----
> Von: Mathias Brökelmann [mailto:[EMAIL PROTECTED]
> Gesendet: Montag, 12. Dezember 2005 15:39
> An: MyFaces Discussion
> Betreff: Re: datatable - parameter passing - workaround?
>
> use an instance of javax.faces.model.DataModel for the datatable´s
> value. You can then use datamodel.getRowIndex() or
> datamodel.getRowData() to get the current row value during the
> iteration.
>
> 2005/12/12, Harald Müller <[EMAIL PROTECTED]>:
>> Hi!
>>
>> My current (test)code to create a datatable in a dynamic created tab looks
>> like this:
>>
>>
>> // datatable
>> UIData hdt =
>> (HtmlDataTable)app.createComponent(HtmlDataTable.COMPONENT_TYPE);
>> hdt.setId("hdtId1");
>> hdt.setVar("hdtVar1");
>> tab.getChildren().add(hdt);
>>
>> List content = new ArrayList();
>> for (int i = 0 ; i<10;i++) {
>> content.add("row " + i);
>> }
>> hdt.setValue(content);
>>
>> // create column
>> UIColumn column =
>> (UIColumn)app.createComponent(HtmlSimpleColumn.COMPONENT_TYPE);
>>
>> // create and add header
>> UIOutput header =
>> (UIOutput)app.createComponent(HtmlOutputText.COMPONENT_TYPE);
>> header.setValue("Last Column");
>> column.setHeader(header);
>>
>> // create and add content
>> UIOutput text =
>> (UIOutput)app.createComponent(HtmlOutputText.COMPONENT_TYPE);
>> ValueBinding valueBinding = app.createValueBinding(#{hdtVar1})
>> text.setValueBinding("value", valueBinding);
>> column.getChildren().add(text);
>>
>> // add column
>> hdt.getChildren().add(column);
>>
>>
>>
>> Ok ... it is not possible to pass a parameter using "valuebinding" - so,
>> there is no way
>> to call #{hdtVar1.name(mystring)} ... right?
>>
>> Is there a way to call a bean-setter and set the current object (of the
>> datatable-iteration)
>> in my bean, so that I'm able to call something like 'String whatever =
>> hdtVar1.getName("mystring")'
>> and do a 'text.setValue(whatever)' from there?
>>
>> Thanks,
>> Harry
>>
>
>
> --
> Mathias
>
>