|
|
|
jsf: доступ к bean объекту не из jsp страницы.
|
|||
|---|---|---|---|
|
#18+
Допустим есть следующий объект Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2006, 09:52 |
|
||
|
jsf: доступ к bean объекту не из jsp страницы.
|
|||
|---|---|---|---|
|
#18+
можно так например: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2006, 12:08 |
|
||
|
jsf: доступ к bean объекту не из jsp страницы.
|
|||
|---|---|---|---|
|
#18+
А как правильнее/удобнее/стандартнее? Есть какие-то уже сложившиеся, хотя-бы неявные стандарты ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2006, 12:18 |
|
||
|
jsf: доступ к bean объекту не из jsp страницы.
|
|||
|---|---|---|---|
|
#18+
Инъектить Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2006, 12:58 |
|
||
|
jsf: доступ к bean объекту не из jsp страницы.
|
|||
|---|---|---|---|
|
#18+
Т.е. все-таки создавать 2 класса "рабочий" и "для отображения", причем оба описывать в faces-config? Тогда для доступа к "рабочему" из других участков кода надо писать как wessen , я правильно понял? Кстати, а когда происходит создание класса, описанного в faces-config, в момент 1-го обращения к его свойству? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2006, 13:08 |
|
||
|
jsf: доступ к bean объекту не из jsp страницы.
|
|||
|---|---|---|---|
|
#18+
Ничего не понимаю - какой "рабочий", какой для "отображения"? К вышенаписанному участку: на страницах: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. и т.п. В коде: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. Как работает: фэйсы перехватывают обращения к infoUserDependent - если он уже есть, возвращает. Если его еще нет - он создается в сессии и ему делается setInfoUser(infoUser). infoUser, опять же, либо уже есть в сессии, либо будет по такому случаю там создан. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2006, 13:26 |
|
||
|
jsf: доступ к bean объекту не из jsp страницы.
|
|||
|---|---|---|---|
|
#18+
Спасибо, ясно, только я спрашивал несколько другое :) Попробую на примере объяснить: Есть окно с пользователем и паролем. Пользователь нажимает кнопку "вход". На обработчике события этой кнопки(надеюсь понятно) я чего-то там проверяю и если удачно, то кладу в сессию руками infoUser. Это я подразумевал под "рабочим" либо "внутренним" объектом, но, если я опишу infoUser в faces-config, то файсы создадут свою версию infoUser ведь так? Откуда им знать, что в сессии уже есть объект infoUser, поэтому я и хотел узнать каким путем идти. А именно 1) создать infoUserWrapper, который будет описан в faces-config и будет лишь враппером над infoUser. Т.о. для доступа из jsp - infoUserWrapper, для доступа из других объектов infoUser. либо 2) создать infoUser, описать его в faces-config, и каким-либо способом обращаться к нему (например как написал wessen ) из других объектов, для доступа из jsp - стандартным способом. Вы (ты, как обращаться), рассказали как поле объектного типа объявить в faces-config. P.S. не надо сильно ругаться, я только начинаю разбираться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2006, 13:57 |
|
||
|
jsf: доступ к bean объекту не из jsp страницы.
|
|||
|---|---|---|---|
|
#18+
Не ругаюсь я, просто не понял что требовалось.Теперь, похоже, доходит :). Итак, задача: хранить в сессии свой объект и обращатся к нему со страницы. Знаю два решения (может, их больше): 1) "Быстро и грязно", то что предложил wessen. на страницах: Код: plaintext в коде: Код: plaintext 1. 2. 3. я против такого подхода - классы что-то знают о JSF, а зачем? 2) Создаем отдельный объект для доступа, который похож на wrapper, о котором ты (мы на форуме, а не в салоне :) ) говорил. Я бы воспользовался таким решением: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. В конфиге проставляем FacesUserSession в UserOfInfoUser. в коде используем: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. теперь в страницах: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2006, 14:39 |
|
||
|
jsf: доступ к bean объекту не из jsp страницы.
|
|||
|---|---|---|---|
|
#18+
Читаю, думаю, спасибо. Что-то интуиция предлагает выбрать способ 2 :) И все-таки, чтобы небыло неясности по 1 способу: если я положу в сессию объект (пусть все тот же infoUser), но на этот момент к нему небыло ни одного обращения из jsp, то при первом обращении к какому либо св-ву этого объекта из jsp файсы поместят в сессию свой объект. Откуда им знать что я создал переменную класса InfoUser и поместил ее в сесию. Я правильно рассуждаю или нет? (по крайне мере у меня не получалось (MyFaces)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2006, 14:57 |
|
||
|
jsf: доступ к bean объекту не из jsp страницы.
|
|||
|---|---|---|---|
|
#18+
2) создать infoUser, описать его в faces-config, и каким-либо способом обращаться к нему (например как написал wessen) из других объектов, для доступа из jsp - стандартным способом. Ты правильно все понял. Так и делай. То, что предлагает сделать Хоха, я, по правде сказать не понимаю, к чему все это???:) И более того, использование вот такого: Код: plaintext 1. 2. 3. не рекомендуется. Тут действительно можно наломать дров. Используй метод, который предложил я, т.е. работа с объектами описанными в faces-config.xml ведется через EL (ExpresionLanguage). При обращении к методу getInfoUser(), если объекта(InfoUser) еще нет в сессии, то он создается, если есть, то он просто возвращается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2006, 15:05 |
|
||
|
jsf: доступ к bean объекту не из jsp страницы.
|
|||
|---|---|---|---|
|
#18+
авторОткуда им знать что я создал переменную класса InfoUser и поместил ее в сесию. как откуда? :) Имя то известно и почему бы не проверить, есть такое в сессии или нет? Если ты правда на прямую будешь писать в сессию -getSessionMap()... То можешь просто затереть старое значение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2006, 15:08 |
|
||
|
jsf: доступ к bean объекту не из jsp страницы.
|
|||
|---|---|---|---|
|
#18+
wessen - про использование getExternal.... вполне поверю, честное слово, проморгал как было написано у тебя. Заменяем содержимое getInfoUser и setInfoUser(InfoUser) Зачем нужно все остальное я написал - классы, отвечающие за поведение не должны знать о реализации сессии. Внешний контекст (в данном случае - то, где лежат общие данные) им стОит инъектить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2006, 15:25 |
|
||
|
jsf: доступ к bean объекту не из jsp страницы.
|
|||
|---|---|---|---|
|
#18+
авторЗачем нужно все остальное я написал - классы, отвечающие за поведение не должны знать о реализации сессии. Не совсем понимаю. Мой метод getInfoUser() можно поместить куда угодно. И зачем нужен метод addInfoUser() тоже не понимаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2006, 15:44 |
|
||
|
jsf: доступ к bean объекту не из jsp страницы.
|
|||
|---|---|---|---|
|
#18+
2 wessen Может конечно и я где ошибся. Но простейший пример страница, кнопка, обработчик события, в нем создаем объект и кладем его в сессию. Описываем <managed-bean> и <navigation-rule> переходим на новую страницу, обращаемся к свойству этого объекта(это первое обращение) получаем засаду. По крайне мере у меня (Tomcat 5.5.16 + JDK 1.4.2_10 + MyFaces) 2 wessen, Hoha а чем чревато Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2006, 15:51 |
|
||
|
jsf: доступ к bean объекту не из jsp страницы.
|
|||
|---|---|---|---|
|
#18+
2Michael Ponomarev покажи код ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2006, 16:01 |
|
||
|
jsf: доступ к bean объекту не из jsp страницы.
|
|||
|---|---|---|---|
|
#18+
немного упростил, но смысл такой faces-config Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. BeanAuthorization Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. BeanInfoUser Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. login.jsp Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. find.jsp Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2006, 16:28 |
|
||
|
jsf: доступ к bean объекту не из jsp страницы.
|
|||
|---|---|---|---|
|
#18+
wessenНе совсем понимаю. Мой метод getInfoUser() можно поместить куда угодно. И зачем нужен метод addInfoUser() тоже не понимаю. Понятно, что можно поместить. Но я предпочитаю кода типа FacesContext.getCurrentInstance()... в классах, реализующих логику, не видеть - привередливый :). Пусть за это отвечает другой объект, которому занятся нечем. + инкапсуляция. Пример: ты сейчас про sessionMap сказал - я поменял два метода в одном классе и все операции с общими данными теперь проходят через ValueBinding. Представляю себе правку тех же 2х методов в 10 классах. setInfoUser(...) нужен для установки в сессию своего объекта. Michael Ponomarev, про sessionMap не знаю. У wessen, похоже, больше опыта - я тоже с удовольствием узнал бы объяснение. Насчет твоего кода - выложи текст исключения, так проще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2006, 17:39 |
|
||
|
jsf: доступ к bean объекту не из jsp страницы.
|
|||
|---|---|---|---|
|
#18+
По поводу текста исключения выложу попозже, сейчас лень окатывать все. Все-таки мне тоже кажется, что логика в одних классах, а за отображение пусть отвечают другие, bean - классы. Я так понял это вопрос вкуса и стиля программирования, о них как известно спорить тяжело :) 2wessen можно поподробнее чем чревато FacesContext.getCurrentInstance().getExternalContext().getSessionMap() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2006, 17:50 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=33650952&tid=2149668]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
186ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 231ms |
| total: | 513ms |

| 0 / 0 |
