чтение атрибута сеанса в JSP - PullRequest
1 голос
/ 10 апреля 2011

Я устанавливаю атрибут сеанса в сервлете с именем cartList, который представляет собой массив строк, подобных этому,

request.getSession().setAttribute("cartList", items);

где items - массив объектов типа String.

В jsp я вызываю вышеуказанный атрибут вот так:

line123:String[] cartItems = (String[]) request.getSession().getAttribute("cartList");
line124:for (int i = 0; i < cartItems.length; i++) {
    line125:String[] cartItem = cartItems[i].split("\\|");

cartItems [i] никогда не будет пустым и будет содержать такую ​​строку, как [AAA-000 | 2].

Я получаю исключение в строке 125, которое является nullpointerexception. Я понятия не имею, почему я получаю эту ошибку. Я проверяю содержимое 'items' в сервлете, оно нормально и не пусто. Я потратил целый день, пытаясь решить эту проблему. Я в своем уме! Любая помощь приветствуется!

1 Ответ

1 голос
/ 10 апреля 2011

Проблема не в том, что вы не получаете cartItems от сессии.Проблема в том, что некоторые значения cartItems содержат ноль.Прежде чем вызывать split(), выведите значение cartItems[i], чтобы увидеть, что он несет.

String[] cartItems = (String[]) request.getSession().getAttribute("cartList");
for (int i = 0; i < cartItems.length; i++) {
    out.println("cartItems["+i+"]: "+cartItems[i]);
    String[] cartItem = null;
    if(cartItems[i]!=null)
        cartItem = cartItems[i].split("\\|");
}

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

...