A couple of causes:
1) A validation or conversion error is being thrown which skipped the invoke action phase. It might be uncaught by the page because of a lacking h:message or h:messages tag. If you were using
JSF 1.2, those errors should be printed in the application server logs. If you are using JSF 1.1 or older, then add <h:messages /> to the page to take note of all validation and conversion errors.
2) The getter of the datatable value doesn't return the same datamodel during the apply request values phase of the next request. So JSF wouldn't be able to determine which row has invoked which action method. To do a quick
test, try placing the bean in the session scope. If it solves the problem and you want to keep the bean request scoped, then
you should review your data loading logic so that it returns exactly the same datamodel in the both requests of displaying the table and processing the submit.
3) The from-view-id of the navigation case doesn't match the actual view id. Verify it, it is case sensitive. The same applies to the to-view-id.
At least also verify if the action method is actually invoked by adding a simple debug statement to it so that you can read in the logs if it is actually invoked. E.g.
[ August 24, 2008: Message edited by: Bauke Scholtz ]