2014-12-18 1 views
1

Я ищу ситуацию, для которой требуется справедливая бит хранения данных, которую я рассмотрел с помощью переменных sessionScope. В небольшом тесте, который я запускал, это работало хорошо, но данные действительно возвращаются на сервер с каждым изменением данных. Я рассматриваю возможность создания компонента JAVA для обновления и управления структурой этих данных и сохранения его в серии переменных sessionStorage. SessionStorage прост в CSJS, но я не уверен, как получить доступ к этим переменным из JAVA Bean. Приложение является чем-то вроде корзины покупок, поэтому я бы сохранил данные в sessionStorage, пока документ не отправит, затем загрузит значения в документ и сохранит его, и я думаю, что это будет работать лучше всего как JAVA.Как получить дескриптор сеансаStorage с помощью JAVA

ответ

2

sessionStorage объект хранит данные для одного сеанса в окне браузера/вкладке со стороны клиента.

Невозможно получить доступ к sessionStorage с сервера с Java.

Вы можете отправить данные на сервер и там вы можете забрать его с помощью Java.

Вы можете отправить его на Ajax или можете отправить его в скрытые поля.

Если вы храните сложную структуру данных с объектами и массивами в sessionStorage, вы можете преобразовать ее в JSON в качестве удобного транспортного средства.

Вы бы преобразовать sessionStorage в строку JSON на стороне клиента с

JSON.stringify(sessionStorage) 

Вы можете разобрать строку JSON с Java на стороне сервера с классами из com.ibm.commons.util.io.json пакета

JsonJavaFactory factory = JsonJavaFactory.instanceEx; 
json = (JsonJavaObject) JsonParser.fromJson(factory, jsonString); 
+0

Ищет способ сделать это, не отправляя/получая с сервера. Можете взглянуть на это с помощью CSJ, но подумал, что в JAVA это может быть лучше, но, возможно, нет. –

+0

@BillF как Knut пишет sessionStorage _local_ в браузере пользователя. Ни в коем случае сервер не может видеть, что без необходимости отправлять его туда и обратно (например, для файлов cookie, которые являются частью запросов). –

0

Это получит sessionScope не LocalStorage, WebStorage, sessionstorage локально в браузере

Но если вы хотите sessionScope это то, как вы это Импорт этих двух классов

import java.util.Map; 
import javax.faces.context.FacesContext; 

И тогда вы может получить его с помощью этого кода

FacesContext facesContext = FacesContext.getCurrentInstance(); 
ExternalContext externalContext = facesContext.getExternalContext(); 
Map sessionScope = externalContext.getSessionMap(); 
+0

Так переменная sessionScope будет содержать содержимое sessionStorage? –

+1

Нет, sessionScope - это карта на сервере, тогда как sessionStorage - это объект в браузере на стороне клиента. –