|
|
|
JSF передача объекта в метод
|
|||
|---|---|---|---|
|
#18+
Добрый день, у меня есть JSF страница редактирования свойств некоторого объекта(item): Код: html 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Это работает. helper это SessionScoped бин. Во первых, я не понимаю почему это не работает без helper, если сделать item SessionScoped. Вот так: Код: html 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Во вторых, я не могу сделать так, чтобы это работало для создания нового item, без указания id. Что бы я ни делал, в myService.save приходит девственно чистый item. Подскажите пожалуйста, как это сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2013, 13:52:50 |
|
||
|
JSF передача объекта в метод
|
|||
|---|---|---|---|
|
#18+
с h:commandButton работает или то же самое? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2013, 14:28:30 |
|
||
|
JSF передача объекта в метод
|
|||
|---|---|---|---|
|
#18+
ivanra, да, то же самое ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2013, 14:33:38 |
|
||
|
JSF передача объекта в метод
|
|||
|---|---|---|---|
|
#18+
попробуйте var="item1", то есть отличное от имени класса было подобное всегда приходили новые объекты, юзал eclipselink ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2013, 14:36:21 |
|
||
|
JSF передача объекта в метод
|
|||
|---|---|---|---|
|
#18+
breath, куда var воткнуть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2013, 14:38:02 |
|
||
|
JSF передача объекта в метод
|
|||
|---|---|---|---|
|
#18+
сорри, var вместо value увидел ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2013, 14:40:40 |
|
||
|
JSF передача объекта в метод
|
|||
|---|---|---|---|
|
#18+
Я сейчас уже подробности не помню, но тут скорее всего дело в первоначальной инициализации бина - при первом обращении он еще не сохранен в сессии. В свое время решал с помощью f:event, примерно так (тут, правда, параметр простое число, но для объектов аналогично): Код: html 1. 2. 3. 4. Заодно решается проблема создания нового объекта (в параметре передаем 'new') Код: java 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2013, 14:50:11 |
|
||
|
JSF передача объекта в метод
|
|||
|---|---|---|---|
|
#18+
ivanra,при первом обращении он еще не сохранен в сессииНу да, но при втором то сохранен. Но в save все равно приходит чистым. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2013, 14:54:21 |
|
||
|
JSF передача объекта в метод
|
|||
|---|---|---|---|
|
#18+
покажите что происходит в #{itemConverter} ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2013, 15:35:00 |
|
||
|
JSF передача объекта в метод
|
|||
|---|---|---|---|
|
#18+
ivanra, ничего особенного не происходит, null возвращает если не находит объект с заданным id Код: java 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2013, 15:51:57 |
|
||
|
JSF передача объекта в метод
|
|||
|---|---|---|---|
|
#18+
в данном случае функция getAsObject никак не связывает полученный результат с бином, сохраненным в сессии. Нужно либо найти его в сессии и заменить значения полей: Код: java 1. 2. 3. либо заменить сам бин в сесси с помощью elctx.getELResolver().setValue. Но проще было бы передать управление в метод самого бина через f:event (f:viewAction начиная с jsf 2.2) Или еще можно инжектить с помощью CDI - вариантов много ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2013, 16:37:03 |
|
||
|
JSF передача объекта в метод
|
|||
|---|---|---|---|
|
#18+
в данном случае функция getAsObject никак не связывает полученный результат с бином, сохраненным в сессии. Даже если я уберу вообще оттуда конвертер, и всю секцию <f:metadata>, в save все равно попадает чистый item. я буду видеть свойства этого item, если перегружу страницу, но он не передается в метод. С хелпером тоже магия, почему без него не работает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2013, 16:48:32 |
|
||
|
JSF передача объекта в метод
|
|||
|---|---|---|---|
|
#18+
похоже, понятно в чем дело. А покажите аннотации бина #{item}, желательно с полным названием класса. Конкретно, интересует, там Код: java 1. 2. 3. и какая вторая аннотация ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2013, 21:18:14 |
|
||
|
JSF передача объекта в метод
|
|||
|---|---|---|---|
|
#18+
ivanra, Код: java 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2013, 23:54:02 |
|
||
|
JSF передача объекта в метод
|
|||
|---|---|---|---|
|
#18+
Я может чего не понимаю , но для чего передавать с помощью : <p:commandButton value="Сохранить" action="#{myService.save(item)}"/> сессионный бин ? !!!! он и так доступен из любого другого бина ! сделай в myService : @ManagedProperty(value="#{item}") private Item item; public void setItem(Item item) { this.item = item; } И this.item - у тебя будет содержать этот бин , со всеми изменениями, которые внесены на странице ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2013, 05:34:24 |
|
||
|
JSF передача объекта в метод
|
|||
|---|---|---|---|
|
#18+
Если нужен бин не сессионный, то поставь ему ViewScope Он так же будет доступен из любого метода вызванного и этой страницы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2013, 05:37:05 |
|
||
|
JSF передача объекта в метод
|
|||
|---|---|---|---|
|
#18+
Так же, насколько я понимаю, любой сессионный бин можно достать из сессиии : final FacesContext facesContext = FacesContext.getCurrentInstance(); (ItemBean) facesContext.getApplication() .getVariableResolver().resolveVariable( facesContext, "ItemBean"); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2013, 05:45:53 |
|
||
|
JSF передача объекта в метод
|
|||
|---|---|---|---|
|
#18+
vladimir.nal,Я может чего не понимаю , но для чего передавать с помощью : <p:commandButton value="Сохранить" action="#{myService.save(item)}"/> сессионный бин ? !!!! Затем что этих бинов больше одного, save работает с любым, и если есть возможность не менять сервис при добавлении очередного бина, я предпочел бы этого не делать, и руками в контекст не лезть. И сессионный бин только в этом примере, может быть и другой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2013, 11:16:14 |
|
||
|
JSF передача объекта в метод
|
|||
|---|---|---|---|
|
#18+
javapeckerivanra, Код: java 1. 2. Остается проверить аннотации myService. Но если во всех бинах такая комбинация - умываю руки, должно работать. Было предположение, что перепутаны jsf и cdi SessionScoped. Разве что кроме аннотаций используются бины, сконфигурированные в xml (так как "этих бинов больше одного"), и ошибка там. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2013, 11:41:01 |
|
||
|
JSF передача объекта в метод
|
|||
|---|---|---|---|
|
#18+
ivanra, Было предположение, что перепутаны jsf и cdi SessionScoped. Я тоже так подумал, но все было на CDI. Поменял все на JSF, стало работать. Но так ведь быть не должно, в xml ничего не конфигурировал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2013, 11:47:03 |
|
||
|
JSF передача объекта в метод
|
|||
|---|---|---|---|
|
#18+
javapeckervladimir.nal,Я может чего не понимаю , но для чего передавать с помощью : <p:commandButton value="Сохранить" action="#{myService.save(item)}"/> сессионный бин ? !!!! Затем что этих бинов больше одного, save работает с любым, и если есть возможность не менять сервис при добавлении очередного бина, я предпочел бы этого не делать, и руками в контекст не лезть. И сессионный бин только в этом примере, может быть и другой. Бинов больше одного может быть только в коллекции. Соответственно эта коллекция принадлежит другому бину или сервису. Так и поставь этому бину ViewScope это и будет эквивалентно его передаче через : <p:commandButton value="Сохранить" action="#{myService.save(item)}"/> Или у тебя метод myService.save - женерик ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2013, 11:48:13 |
|
||
|
JSF передача объекта в метод
|
|||
|---|---|---|---|
|
#18+
vladimir.nal,авторБинов больше одного может быть только в коллекции. Я имею ввиду не количество, а то что у меня несколько разных бинов.Или у тебя метод myService.save - женерик ?Нет, просто Object принимает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2013, 11:59:49 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38462834&tid=2128216]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
209ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
| others: | 244ms |
| total: | 565ms |

| 0 / 0 |
