Hi all,

I have two search forms on the one page, one for searching by name, one for searching by interest.

When either is submitted via Ajax, it gets the results and then repaints a ListView. This List View has an LDM that wraps the results. This is all working fine, the data is coming back as expected.

What is not working is in the populateItem method of the ListView, it retrieves an image for the user. On the first submit, this works and it gets the correct image (as byte[]) for each user that was found, on subsequent searches the first image seems to be cached. It seems to be using the same byte[] for the first item of the previous search, on the first iteration.

Do I need to get the image and add it to my SearchResult item and return that as another property in my object? Currently it's done in the populateItem method based on the result found.


Has anyone come across this before?

Simplified code:

// model to wrap search results
LoadableDetachableModel resultsModel = new LoadableDetachableModel(){
        protected Object load() {
                return results;
        }
};
                
                
                
//search results, calls LDM
ListView resultsListView = new ListView("results-list", resultsModel) {
                        

        protected void populateItem(ListItem item) {
                
        SearchResult searchResult = (SearchResult)item.getModelObject();
                        
        //get userUuid
        final String userUuid = searchResult.getUserUuid();
                        
        final byte[] photo;
        if(isAllowed) {
                photo = profile.getImageForUser(userUuid);
        } else {
                photo = null;
        }
        
        //do stuff
        }
};


and in the form:
protected void onSubmit(AjaxRequestTarget target, Form form) {                  
                
        results = new ArrayList<SearchResult>(profile.findUsers(searchText));
        target.addComponent(resultsListView);
}



thanks,
Steve
        

Reply via email to