Instead of using ui:repeat, I recommend using the h:dataTable for stuff like this. If you wrap the List in a
JSF ListDataModel object and use that as the value attribute of the dataTable element, you will have set up an environment where when you click on a commandButton or commandLink in a row in the table, the command's associated action method can query the DataModel to determine which row was 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.