Пересылка результатов JSTL SQL сервлету - PullRequest
1 голос
/ 09 января 2011

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

Мне нужно отобразить результаты запроса SQL либо в JSTL, либо через сервлет, в зависимости от того, является ли браузер телефоном или нет.Я управлял частью JSTL и определяю, является ли это телефон, и могу перенаправить на сервлет в порядке.

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

Я пробовал:

request.getParameter("viewResult");

, но это возвращает только строку, тогда как я считаю, что мне нужен

javax.servlet.jsp.jstl.sql.Result

объект.

Кто-нибудь знает способ передачи объекта из JSTLСтраница JSP на сервлете при пересылке?

1 Ответ

2 голосов
/ 09 января 2011

HttpServletRequest#getParameter() возвращает параметры HTTP-запроса, которые неявно всегда Strings, так как это указано в спецификации HTTP.

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

<sql:query dataSource="${dataSource}" var="result" scope="request">
    SELECT * FROM foo
</sql:query>
<jsp:include page="/servletURL" />

Таким образом, он будет доступен в сервлете следующим образом:

Result result = (Result) request.getAttribute("result");

Нет необходимости говорить, что это действительно не лучшая практика.Эти теги предназначены для быстрого создания прототипов, а не для реальных приложений (собственные слова Sun / Oracle).Скорее вы должны получить результат БД в методе сервлета doGet() или doPost() (для предварительной обработки или последующей обработки).

...