<html>
<head>
<meta content="text/html; charset=iso-8859-2"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
Hali!<br>
<br>
Igen, én pont a 3. megoldást használom. Működik is mint írtam, csak
az a bajom, hogy ha valahol használom ezt a komponenst, és ott
hivatkozom egy java változóra, akkor a NetBeans hibát jelez, hogy
ismeretlen attribútum.<br>
<br>
pl: <laja:XXX value="egy" aktiv="true"/><br>
Itt kiabál az NB, hogy 'aktiv' attribútum nincsen. Nyilván az a
baja, hogy nincs definiálva az interface-ban. Az a bajom, hogy sehol
nem találtam leírást, hogy mit kellene tennem, hogy ne jelezzen
hibát. (Persze nem arra gondoltam, hogy kikapcsolom a hibajelzést.)
<br>
<br>
Ehhez kapcsolódik, hogy ilyen esetben hogy tudom megadni, hogy egy
java változó 'required', vagy hogy mi legyen abban a komponensben a
default érték, illetve hogyan tudok leírást adni hozzá? Vagyis az
interface-ben definiáltakat ilyenkor hogy tudom megadni?<br>
<br>
Üdv!<br>
<br>
Laja<br>
<br>
<div class="moz-cite-prefix">2015.08.10. 19:19 keltezéssel, Csaba
Győrffy írta:<br>
</div>
<blockquote
cite="mid:CAJdoVuj7FFG9TZ73HNnzrydSHLzs8vUttv7VfVqCA0=x=52BjQ@mail.gmail.com"
type="cite">
<div dir="ltr">
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>Hello,<br>
<br>
</div>
alapvetően három lehetőséget látok. A kódban ezek
némileg keverednek:)<br>
<br>
</div>
1. A komponensben közvetlenül hivatkozod egy managed
beaned valamely mezőjét a szokott módon:
disabled="#{myBean.disabled}"<br>
<br>
</div>
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.<br>
<a moz-do-not-send="true"
href="http://www.mkyong.com/jsf2/composite-components-in-jsf-2-0/">http://www.mkyong.com/jsf2/composite-components-in-jsf-2-0/</a><br>
<br>
</div>
3. A komponenst hozzákötöd egy backing componenthez. Nem
backing bean (azaz managed bean), hanem backing
component.<br>
<a moz-do-not-send="true"
href="http://balusc.blogspot.hu/2013/01/composite-component-with-multiple-input.html">http://balusc.blogspot.hu/2013/01/composite-component-with-multiple-input.html</a><br>
<br>
</div>
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 <code><a
moz-do-not-send="true"
href="http://docs.oracle.com/javaee/6/api/javax/faces/component/UIComponent.html">UIComponent</a></code>
and implement at least the <code><a
moz-do-not-send="true"
href="http://docs.oracle.com/javaee/6/api/javax/faces/component/NamingContainer.html">NamingContainer</a></code>
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.<br>
</div>
<br>
</div>
Üdv<br>
</div>
Csaba<br>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">2015. augusztus 10. 16:21 Freemail
írta, <span dir="ltr"><<a moz-do-not-send="true"
href="mailto:laja@freemail.hu" target="_blank">laja@freemail.hu</a>></span>:<br>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">Hali!<br>
<br>
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?<br>
<br>
XXX.xhtml:<br>
<html ....><br>
<composite:interface
componentType="hu.laja.XXXComponent"><br>
<composite:attribute name="value"
required="true"/><br>
<!-- Itt hogy kell definiálni az
XXXComponent.java 'aktiv' változóját? --><br>
</composite:interface><br>
<br>
<composite:implementation><br>
....<br>
<p:selectOneMenu<br>
disabled="#{not cc.attrs.aktiv"><br>
....<br>
</composite:implementation><br>
</html><br>
<br>
Használva:<br>
....<br>
<laja:XXX value="egy" aktiv="true"/><br>
<br>
<br>
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...<br>
<br>
A kérdésem, hogyan kell definiálni a java-ban lévő
változókat mint attribútumokat a komponensben?<br>
(Ha simán úgy definiálom mint a többit, akkor mindenféle
hibák jönnek, meg nem renderelődik rendesen a komponens :( )<br>
<br>
Köszi!<br>
<br>
Laja<br>
<br>
_______________________________________________<br>
Javalist mailing list<br>
<a moz-do-not-send="true"
href="mailto:Javalist@lists.javaforum.hu" target="_blank">Javalist@lists.javaforum.hu</a><br>
<a moz-do-not-send="true"
href="http://lists.javaforum.hu/mailman/listinfo/javalist"
rel="noreferrer" target="_blank">http://lists.javaforum.hu/mailman/listinfo/javalist</a><br>
</blockquote>
</div>
<br>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
Javalist mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Javalist@lists.javaforum.hu">Javalist@lists.javaforum.hu</a>
<a class="moz-txt-link-freetext" href="http://lists.javaforum.hu/mailman/listinfo/javalist">http://lists.javaforum.hu/mailman/listinfo/javalist</a>
</pre>
</blockquote>
<br>
</body>
</html>