![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| PashaOvechkin |
|
||||||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 394 Регистрация: 1.4.2007 Где: Riga, Latvia Репутация: 1 Всего: 4 |
У меня попятЬ роблема с йсф...
Создан манагед беан
естЬ jsp страничка
а так же разметка в конфиге faces.xml
Когда запускаю страничку, на екране -> " --- first--- --- first--- "
Другими словами стандартный JSTL не пашет в ЙСФ. Так же пробовал в ЙСФ странице написатЬ скриптлет
a = null после етого...
а если сделатЬ так:
То получаю верное значение а. Но сетитЬ атрибут всё равно нелЬзя - беан после етого пересоздаётся и в нём находится то, что укладивает конструктор... На етот вопрос помоему однозначного ответа нету... Мне никто не помог :-| Это сообщение отредактировал(а) PashaOvechkin - 3.6.2007, 11:16 |
||||||||||||||
|
|||||||||||||||
| Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 24 Всего: 62 |
||||
|
||||
| PashaOvechkin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 394 Регистрация: 1.4.2007 Где: Riga, Latvia Репутация: 1 Всего: 4 |
Set managed bean property, from jsf page.
ЙСТЛ не помогает. |
|||
|
||||
| Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 24 Всего: 62 |
||||
|
||||
| PashaOvechkin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 394 Регистрация: 1.4.2007 Где: Riga, Latvia Репутация: 1 Всего: 4 |
Почему же противоречит?
При загрузке йсп (йсф) странички бин находится в сессии или реквесте... Что же мне мешает из тела страницы изменитЬ проперти в нём? Другое дело что доступ к любой из scopes в йсф иначе, именно по етму йстл не работает. Может кто знает как скриптлетом получитЬ бин из сессии например? session.getAttribute(""); не подходит. Как именно хранятся манагед бини не понятно... |
|||
|
||||
| Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 24 Всего: 62 |
PashaOvechkin
Я имею в виду не технически, а идеологически. Изменение состояния бина из страницы не пользователем (вне логики) нарушает mvc паттерн. Что тебе мешает присвоить свое "-----yeeee-----" внутри метода-обработчика сабмита страницы? идеологически это более верно.. Никогда не пробовал рабоать с сессией напрямую из страницы (хотя участвую в больших проектах на jsf -- в этом просто нет необходимости ;) ), но они хранятся именно в сессии, вот только я не уверен что вутри страницы резервированное session ссылается куда нужно. Это сообщение отредактировал(а) Maksym - 4.6.2007, 13:19 |
|||
|
||||
| PashaOvechkin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 394 Регистрация: 1.4.2007 Где: Riga, Latvia Репутация: 1 Всего: 4 |
В йсп ссилается куда надо.
В йсф иначе сессия добывается. Когда получил - смотрю в session1.getAttributesNames(); - там ничего - куча аттрибутов, но нужного нет |
|||
|
||||
| Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 24 Всего: 62 |
PashaOvechkin
Если ты проврял атрибуты сессии до первого обращения jsf'ов к этому managed-bean, то его там не будет, jsf создает beans и добавляет их в сессию by demand. Сессия в принципе одна, по этому я с трудом представляю, чтобы фреймворк ссылался куда-то не туда. В своем посте я имел в виду, что в инлайн скриплете в jsf-странице резервированное имя session может нормально не поддерживаться (хотя не уверен, думаю что здесь все ок, просто в jsf скриплеты не вставляют обычно). Хранит в соответствующем scope, если ты назначил ему сессию, то он будет в сессии. Проверь еще раз, не пытаешся ли ты его там найти до того, как он понадобился jsf (до перехода на страницу, в которой он используется). |
|||
|
||||
| PashaOvechkin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 394 Регистрация: 1.4.2007 Где: Riga, Latvia Репутация: 1 Всего: 4 |
сессия то одна, в етом сомнений нет - доступ к ней разный...
Оки, как из скриптлета получитЬ инстанц манагед бина? Или например, как в йсф страничке создатЬ локалЬную переменную? |
|||
|
||||
| Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 24 Всего: 62 |
Через FacesContext. Объясни подробнее задачу, сдается мне что ее можно решить более прямым способом, чем ручаная модификация managed-bean внутри jsf страницы... они ведь для того и managed-bean, чтоб их jsf мэнэджил, а не программист вручную, где попало.. |
|||
|
||||
| PashaOvechkin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 394 Регистрация: 1.4.2007 Где: Riga, Latvia Репутация: 1 Всего: 4 |
ЕстЬ MenuBacking.java.
В котором естЬ аттрибуты : String topLevel; String secondLevel; String thirdLevel; Они значат под каким разделом в меню находится данная страница. В начале каждой йсф делаю сет етим аттрибутам, позже include мену.йспх, который смотрит в MenuBacking, и рисует меню. Так вот. Решение нормалЬное - но реализоватЬ не получается. Это сообщение отредактировал(а) PashaOvechkin - 4.6.2007, 14:52 |
|||
|
||||
| Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 24 Всего: 62 |
PashaOvechkin
Попробуй описать MenuBacking в session scope. Затем создать и добавить его в ручную в сессию при запуске приложения. И обратится в скриплете, как ты делал до этого. Должен найтись. |
|||
|
||||
| PashaOvechkin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 394 Регистрация: 1.4.2007 Где: Riga, Latvia Репутация: 1 Всего: 4 |
Maksym, спасибо за отзывчивостЬ
(+) Наверно нужно как то иначе думатЬ... Не знаю стопит ли в йсф апликацие, исполЬзоватЬ старие методы... Может кто нибудЬ делал меню на йсф? Шепните идею.... Это сообщение отредактировал(а) PashaOvechkin - 4.6.2007, 17:15 |
|||
|
||||
| Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 24 Всего: 62 |
Ну, на самом деле, проблема скорее архитектурная. Как я понимаю, ты пытаешься сделать меню хотя бы отдаленно в виде компонента (что в общем правильно) и тебе необходимо его параметризовать, с тем чтобы оно на каждой странице выглядело соответсвенно окружающему контексту.
Решение может быть таким: MenuBacking сделать уровня сессии и управлять им в коде перехода от страницы к странице. Это работает только в том случае, когда для управления web flow используется какой-нибудь самописный или внешний фреймворк и все переходы подконтрольны разработчику (т.е. нет, например, прямых линков на страницы, все редиректы проходят через методы объектов, отвечающих за управление web-flow), таким образом при переходе меню можно было бы поднастроить не только в зависимости от страницы, но и от прав пользователя, состояния сессии, источника перехода на страницу и т.п. В итоге полный контроль на ситуацией, разделение логики работы ui и собственно его отрисовки. Но для этого, как я говорил, приложение должно быть соответсвующим образом спроектировано: должен быть некоторый объект или набор объектов управляющий flow и в том числе оперирующий MenuBacking и бэкин бинами для других компонент.. и никаких инлайн скриплетов. Для полной инкапсуляции можно использовать Alias Bean из проекта Tomahawk. Он позволит внутри заинклюденой странички воспользоваться псевдонимом для бэкин бина и реиспользовать ее и бин в любом пространстве имен в этом или других проектах. В текущем проекте у меня есть меню и реализовано оно примерно таким образом как я описал. Проект большой, поэтому предварительно был написан web flow framework отвечающий за управление компонентами, подобными твоему меню, и заточеный под конкретную предметную область и идею интерфейса (в нашем случае это большое количество визардов, а навигация между ними построена на табуляторах и деревьях). |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |