Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > сохранение состоянения между запросами


Автор: osonn 17.5.2006, 11:20
Господа!
Подскажите пож решение.
Есть страница с двумя формами.
Если заполнить в первой поля, а потом вызвать вторую - например приатачить файл - то поля в первой стираются, так как эти соотв поля в бине еще не были проинициализированы, а при создании бина они пустые. Применил куки -
они при нажатии на кнопку в 2 форме сохраняют все поля, а при загрузке страницы
в onload() восстанавливают. Но когда заполняется больше 4к то куки теряют эту инфу и поля опять очищаются.
Так как используется JSF, то решил сделать тот бин, кот соотв странице,
implements StateHolder. Добавил соотв
Код


        public Object saveState(FacesContext context)
        {
            Object values[] = new Object[2];
            values[0] = strProductName;
            return (values);
        }

и
Код


        public void restoreState(FacesContext context, Object state)
        {
            Object values[] = (Object[]) state;
            strProductName = ((String)values[0]);
        }

а также
Код


        private boolean transientValue =false;
        public boolean isTransient()
        {
            return (this.transientValue);
        }
        public void setTransient(boolean transientValue)
        {
            this.transientValue = transientValue;
        }

но кто и когда должен вызывать эти методы я чтото не понял.
Есть ли какие то идеи на этот счет?
 

Автор: MAPCUAHUH 5.7.2006, 23:58
Куки ограничены по размеру и поэтому когда ты набиваешь туда много информации они могут так себя вести.
Для сохранения полей используй сессию:

Сервлет 1:
Код



Session ses=request.getSession();

ses.addAttribute("field1",request.getParameter("field1));



Сервлет2:

Код


Session ses=request.getSession();
String field1_val=(String)ses.getAttribute("field1");



если используешь JSP метод request.getSession() использовать не надо
можно напрямую работать с объектом session
 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)