Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > совет по обработке формы поиска


Автор: vns955 7.12.2009, 17:50
Всем здрям!

Я хочу сделать форму (jsp, Web application) с полем для поиска по какому-либо критерию (скажем по названиям клиентов, содержащих требуемую строку, like). Но хотелось бы чтоб текущая строка в поле ввода сохранялась в процессе работы (в течение сеанса) текущего пользователя. Если сохранять это поле, возращаемое в command (методом onSubmit), в простую переменную, определенную в текущем классе, то переменная получается разделяемая, т.к. этот класс синглетный. Т. обр. если логинится новый пользователь, то у него не пустая строка, а то что ввел предыдущий пользователь . Подскажите плз как решить эту проблему проще. Использую Spring 2.0.

Заранее спасибо!

Автор: ivanovpv 7.12.2009, 22:54
Храните значение переменной в HTTP сессии и при инициализации формы вытаскивайте его из сессии...

Автор: vns955 8.12.2009, 02:31
А как это сделать сказать вкратце можете или привести пример кода? Спасибо.

Автор: DimW 8.12.2009, 09:29
JSP:
Код

<%
String value = "";
if (request.getSession().getAttribute("myValue") != null)
  value = request.getSession().getAttribute("myValue").toString;
else
  request.getSession().setAttribute("myValue", request.getParameter("elementName"));
%>

<html>
  <body>
    <input type='text' name='elementName' value='<%=value%>'/>
  </body>
</html>

Автор: ivanovpv 8.12.2009, 09:43
Да, так тоже можно, а можно и по другому - в JSP всегда есть переменная session
Код

<html>
  <body>
    <input type='text' name='elementName' value='<%=session.getAttribute("myValue")%>'/>
  </body>
</html>


А класть значение параметра myValue в атрибут сессии лучше все же обработчике формы - MVC все же таки smile

Автор: DimW 8.12.2009, 09:55
Цитата(ivanovpv @  8.12.2009,  09:43 Найти цитируемый пост)
в JSP всегда есть переменная session

честно говоря очень редко приходится в jsp писать подобные обработчики, это скорее рефлекторно получилось smile

Цитата(ivanovpv @  8.12.2009,  09:43 Найти цитируемый пост)
MVC все же таки

MVC хорошо понимается, когда есть определенный багаж знаний, судя по вопросу ТС - ему нужно понять как вообще с этим жить...

vns955, в варианте что я предложил есть косяк - значение поиска в сессию падает один раз  smile, ну это уже сам поправишь.  

Автор: ivanovpv 8.12.2009, 12:47
Цитата(DimW @  8.12.2009,  09:55 Найти цитируемый пост)
MVC хорошо понимается, когда есть определенный багаж знаний


Ерунда весь этот MVC... Ну то есть конечно надо стараться следовать этому, но не надо из него делать фетиш и пытаться абсолютизировать паттерн. Важно чувствовать грань за которой борьба за чистоту паттерна начинает сказываться на продуктивности программирования, когда 90% уходит не выполнение задачи, а на попыткам сохранения чистоты. Здесь то же самое. Есть борцы за чистоту MVC на дух не переносящие скриптлеты в JSP страничках и пытающиеся все решить средствами custom tags и проч. Я смайлик поставил имея ввиду только это, что тут есть небольшой скриптлетик, который на взгляд некоторых апологетов в общем то не очень ложится в схему MVC, зато сильно облегчает жисть.

Автор: DimW 8.12.2009, 15:17
Цитата(ivanovpv @  8.12.2009,  12:47 Найти цитируемый пост)
сказываться на продуктивности программирования

а что по вашему продуктивное программирование - это типа когда мысль прет и нужно ее по быстрому изложить там где придется?  smile
 
Цитата(ivanovpv @  8.12.2009,  12:47 Найти цитируемый пост)
когда 90% уходит не выполнение задачи, а на попыткам сохранения чистоты

ivanovpv, вы знаете, часто 90% потраченного времени через некоторое время преврашается в 900% сэкономленного, а грань о которой вы говорите весьма не однозначна, все зависит от опыта и количества грабрей собранных собственным лбом.

лично мне MVC как архитектура нравится, но следовать ее идеалогии получается не всегда, здесь с вами полностью согласен.



Автор: acvilon 8.12.2009, 15:33
DimW, согласен с тобой.
Вообще, по максимум нужно использовать jstl, и если уж совсем никак писать скриплеты. И лучше подумать, может стоит это вынести как метод куда-нибудь. К примеру, в утилиты.

Автор: DimW 8.12.2009, 16:36
Цитата(acvilon @  8.12.2009,  15:33 Найти цитируемый пост)
DimW, согласен с тобой.

я не совсем уверен в том, что ты понял что я хотел сказать.
просто все архитектуры/технологии ограничены рамками их использования, и как часто бывает, разработка того или иного ПО в силу своей специфики не умещается в эти рамки.
лично я не вижу ничего страшного в скриптлетах, если они действительно оправданы - хотябы даже экономически...
если говорить конкретно о том примере который я привел, то в случае, если хранение параметров поиска является концепцией приложения то стоит подумать о диспатчере в виде сервлета, если это будет использоваться всегда на одной странице, то у меня сомнение в целесообразности использования сервлета.
вобщем тут спорить не очем, все и так слишком очевидно smile

Автор: vns955 8.12.2009, 16:50
Спасибо за советы smile

Но тогда возникают такие вопросы:
1. У меня таких форм много будет в проекте и тоже будет необходимость сохранять переменные. Как обеспечить уникальность имен атрибутов?
Может к имени переменной ещё и присоединять текущий сервлет (getServletName())?
2. Ограничено ли число атрибутов для сессии? Не будет ли переполнений стека и т.п. и вообще не будет ли излишней нагрузки на сервер? Какие-то есть ещё подводные камни?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)