|
JSF, PrimeFaces - динамическое добавление, редактирование и удаление элементов
|
|||
---|---|---|---|
#18+
Добрый день Столкнулся с проблемой, при реализации на Primefaces с версиями <jsf.version>2.2.8</jsf.version> <primefaces.version>3.0</primefaces.version> динамического добавления и удаления компонентов inputTextarea с редактированием внутри них значений В итоге удалось реализовать более менее работающий макет, но столкнулся с трудностью- при редактировании значения - если тут же не убирая фокус добавить новый элемент - подтягивается предыдущее нередактированное значения. Приложил скрин с описанием проблемы Создал репо, в котором текущий код можно легко запустить используя mvn clean install run:jetty https://github.com/aradess/jsf-jetty-dyn Собственно вопрос, - каким должен быть код, чтобы редактирования и последующая вставка нового значения проходила корректно? Код: 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. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45.
Код: 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. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 15:44 |
|
JSF, PrimeFaces - динамическое добавление, редактирование и удаление элементов
|
|||
---|---|---|---|
#18+
попробуй ui:repeat из facelets вместо c:forEach из jstl. Но я сильно не вчитывался, просто знаю что c:orEach хреновенько работает с динамически добавляемыми элементами ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 15:49 |
|
JSF, PrimeFaces - динамическое добавление, редактирование и удаление элементов
|
|||
---|---|---|---|
#18+
JSTL по моему вообще не работает и вмести с JSF их лучше не использовать ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 15:52 |
|
JSF, PrimeFaces - динамическое добавление, редактирование и удаление элементов
|
|||
---|---|---|---|
#18+
забыл никпопробуй ui:repeat из facelets вместо c:forEach из jstl. Но я сильно не вчитывался, просто знаю что c:orEach хреновенько работает с динамически добавляемыми элементами пробовал ui:repeat - работоспособного варианта не получилось, то есть с c:forEach удалось продвинуться дальше, но попробую ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 17:09 |
|
JSF, PrimeFaces - динамическое добавление, редактирование и удаление элементов
|
|||
---|---|---|---|
#18+
vas0, совет по использованию JSTL был найден на stackoverflow, в то же время там была найден пост о различиях https://stackoverflow.com/questions/3342984/jstl-in-jsf2-facelets-makes-sense Проблема в том, что я практически не работал ранее с JSF и не хотелось бы собирать все его грабли Потому и прошу совета ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 17:12 |
|
JSF, PrimeFaces - динамическое добавление, редактирование и удаление элементов
|
|||
---|---|---|---|
#18+
Попробовал ui:repeat https://github.com/aradess/jsf-jetty-dyn/blob/feature/repeat/src/main/webapp/helloworld.xhtml https://github.com/aradess/jsf-jetty-dyn/blob/feature/repeat/src/main/java/groupid/HelloWorld.java Как бы работает, но это не то что нужно. Это все реализовано через события вида onclick=submit() - но это приводит к ререндерингу всей формы. А реальный кейс, в котором используется данная функциональность - сложнее, и ререндеринг в нем лишний. Попробую уточнить загвоздку, которую нужно решить, которая есть в следующем коде: Нужно чтобы при выборе значения в selectOneMenu и соответственно запуска в ajax listener="#{helloWorld.change(helloWorld.selectedType)}"/> , чтобы перед запуском этого listener значения которые введены в h:inputTextarea были синхронизированы с helloWorld.values[field] Потому что сейчас наблюдается ситуация: 1) Ввели значение в Поле 3 (и это никак не отобразилось на значениях в helloWorld.values) 2) Выбрали добавление элемента из выпадающего списка 3) Обновили элемент c id="main" значениями которые в helloWorld.values (а они устаревшие) Код: 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. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2019, 15:09 |
|
JSF, PrimeFaces - динамическое добавление, редактирование и удаление элементов
|
|||
---|---|---|---|
#18+
AghialНужно чтобы при выборе значения в selectOneMenu и соответственно запуска в ajax listener="#{helloWorld.change(helloWorld.selectedType)}"/> , чтобы перед запуском этого listener значения которые введены в h:inputTextarea были синхронизированы с helloWorld.values[field] Давно не трогал JSF, но вдруг угадаю. Добавить у p:ajax атрибут process="main" не пробовали? Вроде по умолчанию процессится только компонент, в котором расположен этот p:ajax. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2019, 18:53 |
|
JSF, PrimeFaces - динамическое добавление, редактирование и удаление элементов
|
|||
---|---|---|---|
#18+
А что такая старая версия primefaces? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2019, 22:07 |
|
JSF, PrimeFaces - динамическое добавление, редактирование и удаление элементов
|
|||
---|---|---|---|
#18+
Код: xml 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.
Код: 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. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92.
такой вариант ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2019, 23:44 |
|
JSF, PrimeFaces - динамическое добавление, редактирование и удаление элементов
|
|||
---|---|---|---|
#18+
olegeosА что такая старая версия primefaces? Прощу прощения за столь поздний ответ. Потому что это суровый legacy с кучей функциональности и без тестов. Поменять версию компонентов нереально ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2019, 00:16 |
|
JSF, PrimeFaces - динамическое добавление, редактирование и удаление элементов
|
|||
---|---|---|---|
#18+
olegeosтакой вариант К сожалению у меня не взлетел. Были ошибки компиляции, исправил их, выложил код https://github.com/aradess/jsf-jetty-dyn/blob/feature/2/src/main/webapp/helloworld.xhtml По-прежнему была трабла: 1) Ввели новое значение в Поле 3 (и это никак не отобразилось на значениях в helloWorld.values) 2) Выбрали добавление элемента из выпадающего списка 3) После автоматического обновления значение в Поле 3 - старое, до редактирования Нашел, путем неоднократного гугления по разным запросам следующий пост https://stackoverflow.com/a/30216301 Предлагается использовать ajax и перехватывать значения в bean непосредственно из AjaxBehaviorEvent, и синхронизировать значение мапы в bean со значением, которое на экране Вроде бы заработало, буду смотреть дальше Код: java 1. 2. 3. 4. 5. 6. 7. 8.
https://github.com/aradess/jsf-jetty-dyn/tree/feature/AjaxBehaviorEvent ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2019, 02:00 |
|
|
start [/forum/topic.php?fid=59&fpage=24&tid=2121151]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
43ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 236ms |
total: | 379ms |
0 / 0 |