Я бы пошел с сессионным бином. Если вы используете поисковый компонент, вы можете перейти в любое место в вашем приложении и поддерживать свое состояние поиска, а также он позволяет сохранять результаты поиска в базе данных (чтобы пользователи могли сохранять результаты поиска между сеансами).
@Scope(ScopeType.SESSION)
@Name("someRandomSearch")
public class SomeRandomSearch {
private SearchObj1 userSelection1;
private List<SearchObj1> searchCriteriaList1;
private SearchObj2 userSelection2;
private List<SearchObj2> searchCriteriaList2;
private String randomUserInput;
// getters/setters, some helper classes, cascade dropdown stuff, etc.....
// clear search criteria
public void reset(){
this.userSelection1 = null;
this.userSelection2 = null;
this.randomUserInput = null;
}
}
Просто убедитесь, что в ваших модельных классах реализован метод equals - возможно, это очевидно, но когда я впервые начал использовать Seam, я пропустил этот маленький кусочек, и потребовалось целое время, чтобы понять, почему мы не можем удерживать выпадающие выборки в нашем поиске страниц.