Elements
webforJ-kehittäjillä on mahdollisuus valita ei vain tarjotusta laajasta komponenttikirjastosta, vaan myös integroida komponentteja muualta. Tämä helpottamiseksi Element-komponenttia voidaan käyttää yksinkertaistamaan kaiken integroimista yksinkertaisista HTML-elementeistä monimutkaisempiin mukautettuihin web-komponentteihin.
Element-komponenttia ei voi laajentaa, eikä se ole kaikkien webforJ:n komponenttien peruskomponentti. Lue lisää webforJ:n komponenttihierarkiasta tästä artikkelista.
Näytä koodi
- ElementMeterView.java
Tapahtumien lisääminen
Jotta voit hyödyntää elementtiisi liittyviä tapahtumia, voit käyttää Element-komponentin addEventListener-menetelmiä. Tapahtuman lisääminen vaatii vähintään tapahtuman tyypin/nimen, jota komponentti odottaa, ja kuuntelijan, joka lisätään tapahtumaan.
Lisäksi on muita vaihtoehtoja, joilla voit räätälöidä tapahtumia lisäämällä Event Options -konfiguraatiot.
Näytä koodi
- ElementTagInputView.java
- elementtaginput.css
Komponenttien vuorovaikutus
Element-komponentti toimii säilönä muille komponenteille. Se tarjoaa tavan organisoida ja kerätä tietoa lapsikomponenteista sekä tarjoaa selkeän joukon toimintoja näiden lapsikomponenttien lisäämiseksi tai poistamiseksi tarpeen mukaan.
Lapsikomponenttien lisääminen
Element-komponentti tukee lapsikomponenttien koostumista. Kehittäjät voivat organisoida ja hallita monimutkaisia käyttöliittymärakenteita lisäämällä komponentteja lapsiksi Element-komponenttiin. Kolme menetelmää on olemassa sisällön asettamiseksi Element-komponenttiin:
-
add(Component... components): Tämä menetelmä sallii yhden tai useamman komponentin lisäämisen valinnaiseenString-muuttujaan, joka määrittelee tietyn slotin käytettäessä Web-komponenttia. Slottia jättämällä komponentti lisätään HTML-tunnisteiden väliin. -
setHtml(String html): Tämä menetelmä ottaaString-arvon, joka annetaan menetelmälle, ja injektoi sen HTML:nä komponenttiin. RiippuenElement:istä, tämä voidaan renderöidä eri tavoin. -
setText(String text): Tämä menetelmä käyttäytyy samalla tavalla kuinsetHtml()-menetelmä, mutta injektoi litteän tekstinElement-komponenttiin.
Näytä koodi
- ElementFigureView.java
- elementfigure.css
setHtml()- tai setText()-kutsujen tekeminen korvataan sisällön, joka tällä hetkellä on elementin avaus- ja sulkutunnisteiden välissä.
Komponenttien poistaminen
Lisäksi komponenttien lisäämisen yhteydessä Element-komponentille on toteutettu seuraavat menetelmät erilaisten lapsikomponenttien poistamiseksi:
-
remove(Component... components): Tämä menetelmä ottaa yhden tai useamman komponentin ja poistaa ne lapsikomponenteina. -
removeAll(): Tämä menetelmä poistaa kaikki lapsikomponentitElement-komponentista.
Komponentteihin pääsy
Päästäksesi eri lapsikomponentteihin, jotka ovat läsnä Element-komponentissa, tai saadaksesi tietoa näistä komponenteista, seuraavat menetelmät ovat saatavilla:
-
getComponents(): Tämä menetelmä palauttaa JavaList-luettelon kaikistaElement-komponentin lapsista. -
getComponents(String id): Tämä menetelmä on samanlainen kuin edellinen, mutta se ottaa palvelinpuolen ID:n tietystä komponentista ja palauttaa sen, jos se löytyy. -
getComponentCount(): Palauttaa lapsikomponenttien määrän, jotka ovat läsnäElement-komponentissa.
JavaScript-funktioiden kutsuminen
Element-komponentti tarjoaa kaksi API-menetelmää, jotka mahdollistavat JavaScript-funktioiden kutsumisen HTML-elementeissä.
-
callJsFunction(String functionName, Object... arguments): Tämä menetelmä ottaa funktion nimen merkkijonona ja mahdollisesti yhden tai useamman objektin funktion parametreina. Tämä menetelmä suoritetaan synkronisesti, mikä tarkoittaa, että suorittava säie on estetty kunnes JS-metodi palauttaa tulokset, ja se aiheuttaa pyörämatkan. Funktion tulokset palautetaanObject-muodossa, joka voidaan palauttaa ja käyttää Javassa. -
callJsFunctionAsync(String functionName, Object... arguments): Kuten edellisessä menetelmässä, funktion nimen ja valinnaisia argumentteja voidaan välittää. Tämä menetelmä suoritetaan asynkronisesti eikä estää suorittavaa säiettä. Se palauttaaPendingResult, joka mahdollistaa lisävuorovaikutuksen funktion ja sen kuormituksen kanssa.
Parametrien välittäminen
Nämä menetelmiin välitetyt argumentit, joita käytetään JS-funktioiden suorittamisessa, sarjoitetaan JSON-taulukoksi. Kaksi huomattavaa argumenttityyppiä käsitellään seuraavasti:
this: Käyttämälläthis-avainsanaa saat toiminnolle viittauksen asiakaspään versioon kutsuvasta komponentista.Component: Kaikki Java-komponentti-instanssit, jotka on annettu johonkin JsFunction-menetelmistä, korvataan asiakaspään version mukaisella komponentilla.
Sekä synkroniset että asynkroniset toimintokutsut odottavat, kunnes Element on lisätty DOM:iin ennen funktion suorittamista, mutta callJsFunction() ei odota, että jokin component-argumentti liittyy, mikä voi johtaa epäonnistumiseen. Toisaalta, callJsFunctionAsync()-kutsuminen voi joskus jäädä keskeytymään, jos komponenttiargumenttia ei koskaan liitetä.
Alla olevassa demonissa, valitseminen Kohdistushaku kutsuu natiivi focus()-menetelmän hakusyötteelle callJsFunctionAsync()-menetelmällä. Tuloksena oleva PendingResult käytetään vahvistamaan kutsu toast-viestin avulla, kun asynkroninen toiminto on valmis.
Näytä koodi
- ElementSearchView.java
- elementsearch.css
JavaScriptin suorittaminen
Nimettyjen funktioiden kutsumisen lisäksi, Element voi suorittaa raakaskriptejä, jotka on rajattu tälle elementille executeJs, executeJsAsync ja executeJsVoidAsync -menetelmillä. Katso Suorita JavaScript näille menetelmille, niiden synkroniselle ja asynkroniselle käyttäytymiselle sekä miten palautetut arvot muuttuvat Java-tyypeiksi.