Welcome to the JavaRanch, Khushwant!
You can make your pre-formatted
Java and XML easier to read if you use "Code" tags to wrap them. We have a button on our message editor for that.
It looks like you are binding your List directly to the dataTable. The List doesn't contain the necessary
JSF context information that tells JSF which row of the List you are working with.
If you construct a property of type ListDataModel in your backing bean and use that object to wrap the actual List, it will provide the necessary context (note that you must have View Scope or greater on the bean that holds the ListDataModel).
When your AJAX method is fired, it can then use the currentRow or rowIndex method of that DataModel object to determine the row that the user has selected.
The secret of how to be miserable is to constantly expect things are going to happen the way that they are "supposed" to happen.
You can have faith, which carries the understanding that you may be disappointed. Then there's being a willfully-blind idiot, which virtually guarantees it.