У меня есть bean-компонент @RequestScoped
со свойством List
.
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import org.springframework.stereotype.Controller;
@Controller
@ManagedBean
@RequestScoped
public class MyBean implements Serializable {
private List list;
// getters and setters
}
Это свойство связано с таблицей данных:
<ice:dataTable value="#{myBean.list}" ..other stuff.. />
Список динамически заполняется без проблем, и данные отображаются без проблем. Но если я перейду на другую страницу, а затем вернусь на исходную страницу, данные все еще будут содержать данные исходного запроса. Он не должен снова быть пустым? Если bean-компонент находится в области запроса, он должен быть уничтожен после запроса, и я должен получить и очистить данные в качестве начала.
Еще более странно то, что если я открываю страницу в одном браузере (типа Firefox), заполняю datatable запросом, потом открываю другой браузер (типа Chrome) и захожу на datatable, она заполняется данными из предыдущего запроса из другого браузера! Я думаю, что bean ведет себя как приложение.
Любые идеи?
Обновление 1: класс не является статическим и его переменные. Кроме того, я отключил кеш tomcat, но все равно не работает.
Обновление 2: я думаю, проблема найдена. Мои вспомогательные компоненты помечены @Controller
из Spring. Я использую эту аннотацию, потому что затем использую @Autowired
для привязки сервисов. Может быть, это создает синглтон, и поэтому он не создается и не уничтожается при каждом запросе? Я уверен, что проблема в сочетании аннотаций Spring и JSF2.