h:dataTable value="#{sharkEngine.acceptedAssignments}" must remain
constant  from renderResponse of the first request through
invokeAction of the second request.

I handle this by using <t:saveState value="#{sharkEngine.acceptedAssignments}">



On 9/15/06, David Delbecq <[EMAIL PROTECTED]> wrote:
Hello,

I have a datatable that iterate over some database values. Those values
are subject to change, especially in quantity. The datatable is rendered
like this:
    <h:dataTable value="#{sharkEngine.acceptedAssignments}"
var="theAssignment">
        <h:column>
            <h:commandLink immediate="true"
value="#{theAssignment.activity.name}"
action="#{sharkEngine.action.showActivity}"
actionListener="#{sharkEngine.action.commandListener}">
                <f:param name="activityToShow"
value="#{theAssignment.activity.key}"  />
            </h:commandLink>
        </h:column>
    </h:dataTable>

This basically renders a list of links that need to contain one
information: "activityToShow". Technically,
#{sharkEngine.action.showActivity} will need nothing more to setup
session and show the edition form. However, between display of table and
click by user, the database list referenced by datatable is subject to
change  (because whatever happens, we must reflect db changes to user).

Here is the problem:
If 3 items are showned to user (let's say a,b,c), the user clicks on the
last one (c) but by that time the entry a has been removed from
database, the action does not take place?!?
 I suspect this is because the 3rd line of datatable has been removed,
but how do i handle this. The user won't accept that nothing happens
while he clicks on an entry, obviously. JSF is silent on why it did not
execute the action and <h:messages/> shows nothing too.

What is the good way to create such list of links?

Reply via email to