The problem is the way DataListProvider works. You basicaly just asks for its List of data and then you modify this List. So in onSuccess you ask dataProvider to give you its List, in which it stores its data. You store the reference to that List in listPf. But afterwards, you assign to listPf completely different List. So before this step, listPf pointed into same data that are stored into table (listPf -> List with data in the table). But after that it points to data from RPC (listPf -> result). So obviously, you see no changes to your data in CellTable, because you didn't change them.
The solution should be, set to DataListProvider your new list in onSuccess (I must admit I didn't tried that)
dataProvider.setList(result);
Or work just with provided list from your dataProvider (as I do it)
public void greetServer(String input, List listFromDataProvider) throws IllegalArgumentException {
...
TypedQuery<Pravform> query = em.createQuery("SELECT p FROM Pravform p",Pravform.class);
listFromDataProvider.addAll(query.getResultList());
}
And when you call this method from RPC use
greetServer("someInput", dataProvider.getList())