Simon,
I have a follow up question to this: I have a .jsf page that displays a
datatable (listdatamodel) showing rows of names. At the end of each row I
display a commandlink with the value 'select' that allows the user to select
a name. After they select a name, I want to take them to a second page to
show details for the selected value.
Here is the commandlink from the first .jsf page:
<h:commandLink action="selectprovider" value="#{messages['sort_select']}" />
On the second .jsf page, I access the same bean as was used for the first
.jsf page - I want to access the row index that the user selected from the
first page. Here's what I've tried and values I receive
(searchproviders_bean = bean from 1st page; dm_searchresults =
listdatamodel)
<h:outputText value="#{searchproviders_bean.dm_searchresults.rowIndex}"/>
Always returns -1
<h:outputText value="#{searchproviders_bean.dm_searchresults.rowCount}"/>
Returns correct # of total rows
<h:outputText
value="#{searchproviders_bean.dm_searchresults.getRowIndex()}"/>
Returns error - assume cannot call method
What is the best way to pass the id of a selected row from a datatable to
the second .jsf page?
Thanks
Tom
-----Original Message-----
From: Simon Kitching [mailto:[EMAIL PROTECTED]
Sent: Tuesday, January 03, 2006 4:26 PM
To: MyFaces Discussion
Subject: Re: referencing a managed bean property problem
Hi,
I don't think that the syntax "#{savingsBean.recentBlogEntries[row]}" is
allowed. EL doesn't support passing parameters to methods, just
reading/writing *simple* properties.
I presume your #{savingsBean.savingsList} method returns a List.
You could add a method to your savingsBean that returns a ListDataModel
instance rather than a List, and specify that in the h:dataTable's
"value" attribute. You can then write a getRecentBlogEntries method
which accesses that ListDataModel object to get the current rowData or
rowIndex properties. These refer to the row currently being rendered at
the time the getRecentBlogEntries method is invoked.
Regards,
Simon
Alexandre Poitras wrote:
> I can see one quick mistake:
> #{savingsBean.recentBlogEntries[#{row}]} should be
> #{savingsBean.recentBlogEntries[row]}
>
> On 1/3/06, Marco Mistroni <[EMAIL PROTECTED]> wrote:
>> hello all,
>> this code results in an error
>>
>> <f:view>
>> <h:form id="savingsForm">
>> <h:dataTable value="#{savingsBean.savingsList}" var="row"
border="1">
>> <h:column>
>> <h:outputText value="#{row}"/>
>> </h:column>
>> <h:column>
>> <h:inputText value="#{savingsBean.recentBlogEntries[#{row}]}"/>
>> </h:column>
>> </h:dataTable>
>> <h:panelGroup>
>> <h:commandButton id="submitInsert" action="#{savingsBean.insert}"
>> value="Insert"/>
>> </h:panelGroup>
>> </h:form>
>> </f:view>
>>
>>
>> at this point
>>
>> <h:inputText value="#{savingsBean.recentBlogEntries[#{row}]}"/
>>
>> recentBlogEntries is a Map. i tried, for hte sake of trying, to put in a
>> List (savingsList, the one used for DataTable)all keys
>> of the Map, and tried to generate inputText for the Map by passing the
value
>> of #{row} (which woul dbe the key of the map)
>>
>> it didnt work out..... is that impossible or is my syntax wrong somehow?
>>
>> thanks and regards
>> marco
>
>
> --
> Alexandre Poitras
> Québec, Canada
>
>