отправить данные списка из jsp в сервлет - PullRequest
0 голосов
/ 15 ноября 2010

У меня есть List, и я хочу передать его последующему запросу в качестве параметра строки запроса GET:

<a href="servlet?list=<%=request.getAttribute("list")%>">link</a>

Внутри сервлета я пытаюсь получить его следующим образом:

String[] list = req.getParameterValues("list");

Это не работает. Как мне заставить его работать?

Ответы [ 2 ]

2 голосов
/ 15 ноября 2010

Чтобы иметь возможность использовать getParameterValues(), необходимо отправить несколько параметров в формате:

list=item1&list=item2&list=item3

Но List#toString() печатает следующий формат (щелчок правой кнопкой мыши)страницы в браузере и выберите Просмотр источника , чтобы увидеть его):

list=[item1,item2,item3]

Это явно не сработает.Есть несколько способов решить эту проблему:

  1. Как сказал Божо, напечатайте его через запятую (или оставьте его без изменений) и используйте вместо него request.getParameter(), разделите строку и заполните список, используяобычные String методы, такие как split(), substring(), indexOf() и т. д.

  2. Просто распечатайте его в ожидаемом формате.Лучше всего было бы создать для этого функцию EL.

  3. Сохраните его в сеансе:

     request.getSession().setAttribute("list", list);
    

    , чтобы вы могли просто извлечь его из того же сеанса в следующем запросе:

     List list = (List) request.getSession().getAttribute("list");
    

    При необходимости вы можете вместо этого передать ключ в качестве параметра запроса.

  4. Если у вас уже есть список на стороне сервера (область приложения, база данных и т. Д.), Тогда просто нене передать список.Передайте только те параметры, вокруг которых выдается достаточно информации для повторной загрузки / повторного заполнения списка в сервлете.Строка запроса имеет ограничение максимальной длины, которое не должно превышать 255 символов ASCII.Если список содержит более сотни элементов, вы рискуете, что они все равно будут усечены.

1 голос
/ 15 ноября 2010

атрибут list является List, и вам не следует полагаться на его toString(), который вызывается в вашем коде (за сценой).

Вместо этого вам нужно перебрать список и вставить запятые между элементами.

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