Ok, I have a bean that needs to populate a table so I was trying to work with ListDataModel and I can get it to work fine but where I'm running into 'best practice' difficulties is after doing an update to an item in the table, I want a fresh population of the ListDataModel to be used on the resulting JSP.
Here's the problem... Say I have in my EmployeeListBean ... private static ListDataModel model = new ListDataModel( EmployeeService.getEmployees() ); public ListDataModel getEmployeesModel() { return model; } I can use this on a jsp like... <h:dataTable var="emp" value="#{employeesListBean.employeesModel}" > However, now I click on a link to edit a row in the table and I pull the row in a resulting action... employee = (EmployeeVO)getEmployeesListBean().getEmployeesModel().getRowData(); I then edit this employee on a resulting editForm and then when I submit that form, I want to repopulate the ListDataMode from the database. I could just add a method to the EmployeeListBean... public void populateListDataModel() { model = EmployeeService.getEmployees(); } and I can call that after I do an update. The problem is I think this is a really ugly solution. After doing an upate I shouldn't have to remember to populate some other dataModel in some other class. The EmployeeListBean should be able to stand by itself. Ideally when I do... <h:dataTable var="emp" value="#{employeesListBean.employeesModel}" > I want a FRESH list of the employeesModel coming from my Service class (backend call to populate the list), If I alter the method getEmployeesModel() to look like: public ListDataModel getEmployeesModel() { model = EmployeeService.getEmployees(); } that'll work fine for the list population on the JSP, but I'll of course still need a method to get back the actually model that is on the JSP for when I click on the row and need to get that actual model that has the row I selected? How do I set this object up so that I have a method that populates a fresh list on my JSP and also has a handle to get the listModel so that I can call it and get the rowData I need?