It really depends what the data is, and where it is coming from. In one application, where we got data from the database and that data would only very rarely change (say a list of states, or items) for a list we used a lazy evaluation. On construction and a clear method call we would set the list to null. On the get method for the list, we would check if it was null. If it IS null we would populate the list. If not, we would return the list.
On my current project, where the list might change a bit more often at least for the user I use a a different method. The website owners have a dynamic content management system I built where they can add/edit/delete items that are displayed. The lists update the first time they are needed, and afterwards are updated whenever a change is made. For any arbitrary list, the list is updated via the lazy evaluation I explained earlier. They are further updated whenever we do an add/edit/delete to the database for that particular list.
The getter methods just return the list which is kept in memory, but I make sure the lists update immediately whenever a change is made. Although this may cause updates that are not needed(for example, if the user updates a list and then immediately logs off), it ends up with less updates overall.
You may want to use something simpler. For example, the action that navigates to the page in question may, as a side affect, call something like 'updateMyList' and then return the navigation action to move to the page that uses the list. Then on the page itself, just return the list that is now updated, don't update at that step. Try putting in some debugging print statements. Find out where the work is being done (for example where you actually connect to the database) and put System.out.println("Calling database to retrieve data for list"); Watch how many times it is actually called on page load. In my database connection code, I print a simple statement: Db connection established. Then as I navigate I can watch how many times i connect to the database. Once the project is ready for production I go back through and clean out these statements.
Best of luck