Получение нулевого значения из сервлета в jsp

У меня есть 2 страницы jsp, первая страница jsp будет отображать изображения со ссылкой на вторую страницу jsp.

<a href='/display.jsp?src=<c:out value="${photo.source}"/>'>

В сервлете дисплея у меня есть следующий код...

String srcLink = (String) req.getParameter("src");
    req.setAttribute("src", srcLink);
    getServletConfig().getServletContext().getRequestDispatcher("/display.jsp").forward(req, resp);
}

Внутри моего второго jsp (display.jsp) у меня есть следующий код...

<img src="<%= request.getAttribute("src") %>" />

Однако, когда я просматриваю в своем браузере, он будет отображаться как...

<img src="null" />

Есть ли шаги, которые я сделал неправильно?


person Sky    schedule 04.09.2013    source источник
comment
Я думаю, что вы не можете передавать значения с одной страницы на другую, щелкнув одну ссылку, как вы делаете ahref. Вам следует использовать форму для передачи значений.   -  person SpringLearner    schedule 04.09.2013
comment
Почему вы используете EL на одной странице (хорошо), а скриптлет на другой (плохо)?   -  person sp00m    schedule 04.09.2013


Ответы (4)


Нет необходимости устанавливать атрибут как request.setAttribute(), так как вы используете RequestDispatcher. Он перенаправляет тот же запрос на другой сервлет/JSP. Вы просто можете использовать request.getParameter

используйте request.getParameter("src")

вместо

request.getAttribute(...)

поэтому код в отображаемом сервлете будет выглядеть так:

    getServletConfig().getServletContext().getRequestDispatcher("/display.jsp").forward(req, resp);

и внутри display.jsp,

<img src="<%= request.getParameter("src") %>" />

см.: http://www.jguru.com/faq/view.jsp?EID=206736

person Community    schedule 05.09.2013
comment
Я попробовал это, и это работает. Спасибо. <img src="<c:out value = "${param.src}" />" /> тоже работает. - person Sky; 07.09.2013
comment
Да, ‹img src=‹c:out value = ${param.src} /› также должен работать вместо req.getParameter(). Извините, я забыл упомянуть об этом. Здесь вы используете JSTL. Использование JSTL всегда лучше. Я не предпочитаю использовать скриптлеты в JSP, этого следует избегать. Однако здесь я пытался руководствоваться концепцией, а не кодом. - person ; 10.09.2013

Я думаю, вы столкнулись с синтаксической ошибкой.

<a href='/display.jsp?src=${photo.source}'>
person Suresh Atta    schedule 04.09.2013
comment
Ваш URL-адрес href неверен, так как у вас есть двойные кавычки и закрывающий тег не требуется. - person araknoid; 04.09.2013

Я изменил на ниже, и он все еще не работает...

<a href='/display.jsp?src=${photo.source}'>

На самом деле на моей первой странице jsp не отображается ошибка, поскольку я вижу, что все ссылки отображаются правильно.

После долгих попыток я удалил кодировку в своем отображаемом сервлете и изменил кодировку на моем втором jsp на...

<img src="<c:out value = "${param.src}" />" />

Теперь он работает нормально. Спасибо за предложение :)

person Sky    schedule 05.09.2013

Можешь попробовать

<a href='/display.jsp?src=${photo.source} />

на вашей первой странице jsp.

person Mayur Patel    schedule 04.09.2013
comment
‹a href='/display.jsp?src=${photo.source}'/› - person Mayur Patel; 04.09.2013