Я ищу ситуацию, для которой требуется справедливая бит хранения данных, которую я рассмотрел с помощью переменных sessionScope. В небольшом тесте, который я запускал, это работало хорошо, но данные действительно возвращаются на сервер с каждым изменением данных. Я рассматриваю возможность создания компонента JAVA для обновления и управления структурой этих данных и сохранения его в серии переменных sessionStorage. SessionStorage прост в CSJS, но я не уверен, как получить доступ к этим переменным из JAVA Bean. Приложение является чем-то вроде корзины покупок, поэтому я бы сохранил данные в sessionStorage, пока документ не отправит, затем загрузит значения в документ и сохранит его, и я думаю, что это будет работать лучше всего как JAVA.Как получить дескриптор сеансаStorage с помощью JAVA
ответ
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);
Это получит 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();
Так переменная sessionScope будет содержать содержимое sessionStorage? –
Нет, sessionScope - это карта на сервере, тогда как sessionStorage - это объект в браузере на стороне клиента. –
Ищет способ сделать это, не отправляя/получая с сервера. Можете взглянуть на это с помощью CSJ, но подумал, что в JAVA это может быть лучше, но, возможно, нет. –
@BillF как Knut пишет sessionStorage _local_ в браузере пользователя. Ни в коем случае сервер не может видеть, что без необходимости отправлять его туда и обратно (например, для файлов cookie, которые являются частью запросов). –