Advertisement

Stwórz profil

Musisz wpisać swoje imię
Musisz wpisać swoje nazwisko
Musisz wpisać poprawny e-mail
Musisz wpisać hasło (min. 8 znaków)
Musisz zaakceptować regulamin

Dominik Cebula Programista C/C++,
Delphi, PHP

Temat: c:forEach - wywołanie bean-a z argumentem

witam

Proszę o pomoc w JSF, link do omawianej strony:
http://code.google.com/p/dcstore/source/browse/trunk/d...
W linijce 44 mam taki kod:

<c:forEach items="${imagesWeb.getImagesURL()}" var="i">

Funkcja getImagesURL() w ManagedBean korzysta z idProduct, który jest ustawiany w linijce 43 za pomocą:

${imagesWeb.setIdProduct(p.id)}

Wcześniej próbowałem takiego wywołania:

<c:forEach items="${imagesWeb.getImagesURL(p.id)}" var="i">

Oczywiście funkcja getImagesURL() miała wtedy deklarację z argumentem, niestety w przypadku wywoałania getImagesURL() z przekazywaniem p.id jako argument zawsze w argumencie lądowała wartość 0. Dlaczego tak się działo?

Aktualnie najpierw ręcznie ustawiam property bean-a, z którego potem korzystam, ale daczego w forEach nie udało się przekazać id z obiektu p jako argument, jeżeli w linijce 31:

<h:graphicImage id="image_main" width="300" url="${imagesWeb.getCoverURL(p.id)}" />

robię dokładnie to samo i działa poprawnie?

Źródło ImagesWeb bean-a:
http://code.google.com/p/dcstore/source/browse/trunk/d...Dominik Cebula edytował(a) ten post dnia 23.01.12 o godzinie 20:31
23.01.2012, 19:30

Temat: c:forEach - wywołanie bean-a z argumentem

Dominik Cebula:
witam

Proszę o pomoc w JSF, link do omawianej strony:
http://code.google.com/p/dcstore/source/browse/trunk/d...
W linijce 44 mam taki kod:

<c:forEach items="${imagesWeb.getImagesURL()}" var="i">

Źle, wystarczy wrzucić ${imagesWeb.imagesURL} system sam zadba by wywołać getter czyli getImagesUrl;

${imagesWeb.setIdProduct(p.id)}


<c:forEach items="${imagesWeb.getImagesURL(p.id)}" [/quote]> var="i">[quote]

Ogólnie takie rzeczy robi się ew w tagach, Tworzysz własny taglib który ma jakieś argumenty i przekazujesz je wywołując np:
<mojTaglib:forEach items="${imagesWeb.imagesUrl}" id="${p.id}">

i taki taglib robi własną pętlę wykorzystując przekazane dane.
Aktualnie najpierw ręcznie ustawiam property bean-a, z którego potem korzystam, ale daczego w forEach nie udało się przekazać id z obiektu p jako argument, jeżeli w linijce 31:

<h:graphicImage id="image_main" width="300" [/quote]> url="${imagesWeb.getCoverURL(p.id)}" />[quote]

Tak się robić nie powinno, jak wcześniej wspomniałem, najlepiej stworzyć taglib, bądź skorzystać z tagów już gotowych, dostępnych w frameworku

Jak się mylę to niech mnie ktoś poprawi ;)Darek Z. edytował(a) ten post dnia 25.01.12 o godzinie 20:41
25.01.2012, 20:41

Dominik Cebula Programista C/C++,
Delphi, PHP

Temat: c:forEach - wywołanie bean-a z argumentem

Dziękuję za odpowiedź, mówiąc, że nie powinienem wywoływać funkcji z Managed Bean z argumentami tylko korzystać z taglib, masz na myśli to, że taka jest przyjęta konwencja, dobra praktyka w JSF czy może jest jakiś konkretny powód dla, którego nie powinienem pisać funkcji w Managed Bean z argumentami?
25.01.2012, 20:58

Temat: c:forEach - wywołanie bean-a z argumentem

Metody w managed beans mozesz pisać z argumentami, ale z tego co wiem nie wywoluje się ich w taki sposób w jaki Ty próbujesz. Od tego typu rzeczy są tagliby.
25.01.2012, 21:35

Piotr Janik drobny ciułacz

Temat: c:forEach - wywołanie bean-a z argumentem

Witajcie,
A nie jest tak, że argumenty są obsługiwane od JSF2.0 ?
Już jakiś czas nie siedzę w JSF ale tak mi się coś przypomina.
Pamiętam też, że Seam dodawał swojego czasu możliwość wywoływania metod z argumentami wprost z kodu xhtml/jsf.
Można było ustawić argument poprzez f:setPropopertyActionListener, czy jakoś tak.
Dokładnie nie pamiętam.

Pozdrawiam,
Piotr
10.02.2012, 18:06

Dominik Cebula Programista C/C++,
Delphi, PHP

Temat: c:forEach - wywołanie bean-a z argumentem

Chyba tak, po prostu pomyliłem przede wszystkim symbol rozpoczęcia EL, dla JSP ten symbol to $, dla JSF #.... dlatego miałem problemy z przekazywaniem argumentów ;-)
10.02.2012, 19:07



Wyślij zaproszenie do