The problem is that the ClientRate in the model is not the actual ClientRate Object, but a proxy Object of the given Objects.
This means that updating the ClientRate objects that were initially set will not reflect to the Model data.
The model content should be updated instead by setting the contents again or updating the correct object using the model object setter.
Configuring the Grid component by using templates in currently not supported by Flow.
You can however declare a vaadin-grid in your template (without columns), map it to your PolymerTemplate class by using @Id, and then add columns to it and set the items (or DataProvider).
@Id("rates-grid")
private Grid<ClientRate> grid;
// Called from the constructor, or any other point where you configure your view/page
private void configureGrid(){
grid.addColumn(ClientRate::getJobType).setHeader("Job Type");
grid.setItems(getRates());
}
— edit —
Now I realized you’re not using the Grid at the server-side at all, so my comment doesn’t apply directly to your case. But I’ll leave the code here so it can help people having similar problems.
What you have said is correct, but I think you have misunderstood my problem. The problem is that the returned proxy objects do not reflect the updates made from the grid. If you look at the code provided I’m iterating over the rates from the model, not from the bean.
Flow is not being notified about the individual item changes.
Since you own the template, a good way of sending the data from the client to the server is to add an observer for when the item is changed (see https://www.polymer-project.org/2.0/docs/devguide/observers ) and then call a method on the server by using @ClientDelegate, or post an event that the server can receive by using @EventHandler + @EventData. If the data on the server-side, you can properly update your model.