As far as losing track of what row you're working on, that was the original point. The cursor information used to do such things is lost when you run in request scope.
If the value of a data table has request scope, be sure that the data does not change between the rendering of the table and the decoding of the
response. If the new data set is different, then the wrong row will be processed. If the new data set is empty, then no action takes place at all
because no matching link is encountered.
For example, on inputText, its validator attribute must refer to a Validator object, but converter must refer to a converter method (on a backing bean).