2013-08-20 4 views
2

У меня есть код в сценарии. Как можно переписать его с помощью JSTL?Принимающий объект в JSTL

<% 
    int Queryid = new Integer(request.getParameter(" QueryNo")); 
    Queries query = QueriesUtil.findByQid(Queryid); 
%> 
+3

JSTL не является правильным решением либо. Вы не выполняете управление потоком вывода HTML. Пришло время изучить сервлеты, чтобы предварительно обработать запрос на страницу JSP. См. Также http://stackoverflow.com/questions/3177733/how-to-avoid-java-code-in-jsp-files/3180202#3180202 и http://stackoverflow.com/tags/servlets/info – BalusC

+1

+1 к BalusC. Боковое примечание: вызов toString() в String бесполезен. И вы должны соблюдать соглашения об именах Java. –

+0

Вы хотите установить объект Queries в атрибут объекта запроса в классе сервлетов и принять с jsp-страницы с помощью EL? – Aneesh

ответ

4

Ваш запрос здесь должен первым ударить сервлета, который запускает QueriesUtil (Бизнес/классы DAO в целом), чтобы получить Query объект, как и прежде

Queries query = QueriesUtil.findByQid(Qid); 

Затем сервлет должен сделать это доступный в правильном объеме (скажем, запрос для eaxmple)

request.setAttribute("query", Query); 

до переадресация он предназначен для JSP с использованием RequestDispatcher.

RequestDispatcher view = request.getRequestDispatcher("target.jsp"); 
view.forward(request, response); 

Теперь, предполагая, что Query имеет value свойство может извлекаться в target.jsp как

<c:out value="${query.value}" /> 
+0

Спасибо за этот ответ. Но, что, если я перехожу от одной страницы jsp к другому, сервлеты не выполняются между ними. Рассмотрим, имея гиперссылку с одним параметром QueryNo Open. Что мне делать на странице viewQueries.jsp для того же кода выше? Мне нужно получить значение параметра (QueryNo) из URL-адреса, а затем создать объект Queries, соответствующий этому QueryNo. – Aneesh

+0

Просто замените 'href =" viewQueries.jsp? QueryNo = 4 "' на 'href =" viewQueries? QueryNo = 4 "', в результате чего 'viewQueries' определяется как' @WebServlet ("/ viewQueries") 'и помещает эту Java код в методе doGet() 'сервлета. Это все. Вы когда-нибудь пытались приложить небольшое усилие, чтобы щелкнуть и прочитать ссылки в моем комментарии? Там все ясно объяснено. – BalusC

+1

@ Анеш, все это подпадает под хорошие практики и способствует чистому разделению, которое защищает MVC. Зачем беспокоиться о том, чтобы половина вашей страницы использовала JSTL, когда другая половина все равно нарушала стандарты? У вас могут быть другие причины для этого, но вы или любой, кто просил вас делать это, не хватает большой картины, как описано BalusC [здесь] (http://stackoverflow.com/a/3180202/1237040). –

Смежные вопросы