Java Cookie добавить / удалить проблему? - PullRequest
0 голосов
/ 04 августа 2010

Моя проблема с файлами cookie заключается в следующем. Я пытаюсь добавить новый файл cookie и несколько строк после того, как собираюсь прочитать все файлы cookie, создать новый объект и назначить его Spring View, проблема в том, что мои файлы cookie не добавлено, все работает после перезагрузки страницы, но не одновременно ...

    Cookie[] cookies = request.getCookies();
if (cookies != null) {
    for (int i = 0; i < cookies.length; i++) {
        if (cookies[i].getName().equals(
                "proizvod_" + Integer.toString(proizvodiId))) {
            String kolicina_cur = cookies[i].getValue();
            int pom = Integer.parseInt(kolicina_cur);
            cookies[i].setValue(Integer.toString(pom + kolicina));
            response.addCookie(cookies[i]);                     
        }

    }
}

Cookie[] cookiesN = request.getCookies();
ProizvodiCommand proizvodiCommand = new ProizvodiCommand();
if (cookiesN != null) {
    for (int i = 0; i < cookiesN.length; i++) {
        if (cookiesN[i].getName().startsWith("proizvod_")) {
            String ime = cookiesN[i].getName();
            String kolicinaN = cookiesN[i].getValue();
            String id_s = ime.replace("proizvod_", "");
            int id = Integer.parseInt(id_s);
            // prepare for spring view....
        }


    }
}

Я удалил несколько строк для подготовки данных весны, для лучшего просмотра.

Та же проблема возникает, когда я пытаюсь удалить cookie и собрать все существующие cookie несколькими строками ниже, это работает после перезагрузки страницы.

Я пытался добавить некоторую задержку, но это не помогает ... Если у кого-то есть решение, поделитесь им со мной:)

Спасибо!

Ответы [ 2 ]

1 голос
/ 05 августа 2010

Во-первых, опубликованный вами код выглядит так, как будто он изменяет уже существующие файлы cookie, а не добавляет новые.

Во-вторых, каждый вызов request.getCookies() возвращает один и тот же набор пар cookie / значение в течение одного запроса. Поэтому ваш второй блок кода не видит ваши новые куки.

Попробуйте эти изменения (во втором блоке кода):

Cookie[] cookies = request.getCookies();
if (cookies != null) {
    for (int i = 0; i < cookies.length; i++) {
        if (cookies[i].getName().equals(
                "proizvod_" + Integer.toString(proizvodiId))) {
            String kolicina_cur = cookies[i].getValue();
            int pom = Integer.parseInt(kolicina_cur);
            cookies[i].setValue(Integer.toString(pom + kolicina));
            response.addCookie(cookies[i]);                     
        }

    }
}

ProizvodiCommand proizvodiCommand = new ProizvodiCommand();
if (cookies != null) {
    for (int i = 0; i < cookies.length; i++) {
        if (cookies[i].getName().startsWith("proizvod_")) {
            String ime = cookies[i].getName();
            String kolicinaN = cookies[i].getValue();
            String id_s = ime.replace("proizvod_", "");
            int id = Integer.parseInt(id_s);
            // prepare for spring view....

    }
}
0 голосов
/ 05 августа 2010

Если я вас правильно понял, вы читаете куки, которые приходят с запросом, а затем добавляете куки в ответ.А затем ожидайте увидеть добавленные файлы cookie среди файлов cookie, которые приходят с запросом ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...