[Javalist] jsf java attributum

Csaba Győrffy csabeee at gmail.com
2015. Aug. 10., H, 19:19:21 CEST


Hello,

alapvetően három lehetőséget látok. A kódban ezek némileg keverednek:)

1. A komponensben közvetlenül hivatkozod egy managed beaned valamely
mezőjét a szokott módon: disabled="#{myBean.disabled}"

2. A komponensben definiálsz egy aktiv attribútumot. Az interfészen belül,
ugyanúgy, mint ahogy a value-t definiáltad, majd a felhasználás helyén is
megadod (ha már required), ahogy tetted is. Így nem kötöd hozzá egy konkrét
beanhez a komponenst, hanem a komponens felhasználója dönthet a
felhasználás helyén arról, mit ad át.
http://www.mkyong.com/jsf2/composite-components-in-jsf-2-0/

3. A komponenst hozzákötöd egy backing componenthez. Nem backing bean (azaz
managed bean), hanem backing component.
http://balusc.blogspot.hu/2013/01/composite-component-with-multiple-input.html

Azért írtam, hogy keverednek a lehetőségek, mert az interfésznél van egy
ilyened: componentType="hu.laja.XXXComponent". Ez pontosan a harmadik
megoldás egyik kulcspontja. Az XXXComponent ilyenkor egy backing component
kell legyen, ami többek között azt jelenti, hogy "This must be an instance
of UIComponent
<http://docs.oracle.com/javaee/6/api/javax/faces/component/UIComponent.html>
and implement at least the NamingContainer
<http://docs.oracle.com/javaee/6/api/javax/faces/component/NamingContainer.html>
interface". Ilyenkor a backing component mezőit nem cc.attrs.mezőnév, hanem
cc.mezőnév formában lehet elérni, és ezek a mezők nem Stringek pl., hanem
UI komponens típusúak, pl. UIInput. Az 1. és 2. megoldásoknál nincs szükség
a componentType megadására.

Üdv
Csaba

2015. augusztus 10. 16:21 Freemail írta, <laja at freemail.hu>:

> Hali!
>
> JSF-ben csinálok egy saját compisite components-et, legyen a neve monjuk
> XXX. Van hozzá egy java osztály is, ami legyen XXXComponent.java. Ebben
> vagy egy változó, mondjuk legyen 'aktiv'. Van hozzá getter meg setter ahogy
> kell. A kérdésem az, hogy hogyan tudom a kompons leíró xhtml-ben definiálni
> mint attribútum ezt a változót?
>
> XXX.xhtml:
> <html ....>
>     <composite:interface componentType="hu.laja.XXXComponent">
>         <composite:attribute name="value" required="true"/>
>         <!-- Itt hogy kell definiálni az XXXComponent.java 'aktiv'
> változóját? -->
>     </composite:interface>
>
>     <composite:implementation>
>         ....
>         <p:selectOneMenu
>             disabled="#{not cc.attrs.aktiv">
>         ....
>     </composite:implementation>
> </html>
>
> Használva:
> ....
> <laja:XXX value="egy" aktiv="true"/>
>
>
> Ez így működik rendesen, de a NetBeans meg más kód ellenőrzők hibásnak
> titulálják a kódot, mert hogy nincs olyan attribútuma hogy 'aktiv'. Persze
> hogy nem látja, mert nincs definiálva...
>
> A kérdésem, hogyan kell definiálni a java-ban lévő változókat mint
> attribútumokat a komponensben?
> (Ha simán úgy definiálom  mint a többit, akkor mindenféle hibák jönnek,
> meg nem renderelődik rendesen a komponens :( )
>
> Köszi!
>
> Laja
>
> _______________________________________________
> Javalist mailing list
> Javalist at lists.javaforum.hu
> http://lists.javaforum.hu/mailman/listinfo/javalist
>
--------- következő rész ---------
Egy csatolt HTML állomány át lett konvertálva...
URL: <http://lists.javaforum.hu/pipermail/javalist/attachments/20150810/e16fd2bc/attachment.html>


További információk a(z) Javalist levelezőlistáról