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


Автор: NiUb 6.4.2010, 14:18
Здравствуйте
Я столкнулся с такой проблемой -
есть приложение,  на jsp странице отображаются данные из БД , весь процесс ковыряний в БД реализован на самой странице, при получении из БД нужных данных, формируется объект(при помощи hibernate) Затем при помощи pageContext.setAttribute(*,*,*)  этот объект "устанавливается" для этой страницы  => я могу из скриплета вызывать методы этого объекта и тд и тп, вобщем работать с ним как с обычным pojo
Моя задача убрать логику работы с БД с jsp страницы, путем использования либо сервлетов, либо спринг контроллеров
Я пробую сделать так - использую AbstractCommandController и метод protected ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors)  - из контоллера лезу в БД создаю требуемый объект, затем создаю map с параметрами которые мне будут нужны на jsp (вместе с требуемым объектом) и передаю это все сюда  
Код

ModelAndView modelAndView = new ModelAndView("myjsp.jsp", "mymap", mymap);

Вот теперь вопрос - могу я как то в таком случае достучаться до нужного мне объекта которые храниться в "mymap", то есть достучаться я до него могу так mymap.myobject, но мне нужно чтобы на странице существовал сам объект myobject, так чтобы я мог вызывать его методы из скриплета
Такое возможно ? или можно как то через обычные сервлеты сделать ? 
Заранее благодарен за помощь

Автор: garbuz 6.4.2010, 15:58
Все возможно.
Если используете спринг, то кладите все в map, на транице сразу дергайти объект без обращения к map.
Вызов методов в скриплетах не очень хорошая практика и вообще сами скриплеты тоже. На так как вас на страницу нужно передать бин, то скорее всего необходимо отбразить значения его полей. Пользуйтесь jstl, вытягивате значение через
Код

<c:out value=${bean.field}/>


Автор: NiUb 6.4.2010, 16:29
garbuz, спасибо за отклик, но мне нужно именно вызывать методв а не поля, понимаю что это не сильно хорошая практика, но логика была изначально реализованна так, и очень тяжело и долго переносить её в контроллер
Мне бы какой то приёмчик с <jsp:useBean / > но только уже инициализированным моим злополучным объектом .... ) 

Автор: drG100k 11.4.2010, 22:12
Цитата(NiUb @ 6.4.2010,  16:29)

Мне бы какой то приёмчик с <jsp:useBean / > но только уже инициализированным моим злополучным объектом .... )

А чем обычный useBean не нравится? Выставил scope="application" и лови свой инстанс наздоровье (если объект УЖЕ есть)
Этот таг сначала ищет объект бина, если не находит, то уж тогда создаёт. 



Автор: NiUb 13.4.2010, 21:30
Спасибо
Я воспользовался в контроллере requsest.setAttribute() а в jsp в скриплете словил инстанс getAttribute()утом
Цитата(drG100k @ 11.4.2010,  22:12)
 Выставил scope="application" и лови свой инстанс наздоровье (если объект УЖЕ есть)

Тут я не допонял( Что Вы имели ввиду ? Где я могу инициализировать свой бин с выставлением scope ?

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