Elements
webforJ-kehittäjillä on mahdollisuus valita paitsi tarjoamastaan laajasta komponenttikirjastosta, myös integroimalla komponentteja muualta. Tämän helpottamiseksi Element-komponenttia voidaan käyttää yksinkertaistamaan kaiken integrointia yksinkertaisista HTML-elementeistä monimutkaisempiin mukautettuihin verkkokomponentteihin.
Element-komponenttia ei voi laajentaa, eikä se ole kaikkien webforJ-komponenttien peruskomponentti. Lisätietoja webforJ:n komponenttierarkkitehtuurista saat lukemalla tämän artikkelin.
Näytä koodi
- ElementMeterView.java
- elementMeter.css
Tapahtumien lisääminen
Jotta voit hyödyntää elementin mukana tulevia 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 lisävalintoja, joilla voidaan mukauttaa tapahtumia edelleen käyttämällä tapahtumavaihtoehtojen asetuksia.
Näytä koodi
- ElementTagInputView.java
- elementTagInput.css
Komponenttien vuorovaikutus
Element-komponentti toimii muiden komponenttien säiliönä. Se tarjoaa tavan organisoida ja hakea tietoja lapsikomponenteista ja tarjoaa selkeän joukon toimintoja lisätä tai poistaa näitä lapsikomponentteja tarpeen mukaan.
Lapsikomponenttien lisääminen
Element-komponentti tukee lapsikomponenttien yhdistämistä. Kehittäjät voivat järjestää ja hallita monimutkaisia UI-rakenteita lisäämällä komponentteja lapsiksi Element-komponenttiin. Kolme menetelmää on olemassa sisällön asettamiseksi Element-komponenttiin:
-
add(Component... components): Tämä menetelmä mahdollistaa yhden tai useamman komponentin lisäämisen valinnaiseenString-arvoon, joka määrittää tarkat sijainnit käytettäessä verkkokomponenttia. Jos sijaintia ei anneta, komponentti lisätään HTML-tunnisteiden väliin. -
setHtml(String html): Tämä menetelmä ottaa sisään tulevanString-arvon ja injektoi sen HTML:nä komponenttiin.Element:n mukaan tämä voidaan renderöidä eri tavoin. -
setText(String text): Tämä menetelmä toimii samalla tavalla kuinsetHtml()-menetelmä, mutta injektoi kirjaimellisen tekstinElement:iin.
Näytä koodi
- ElementFigureView.java
- elementFigure.css
setHtml()- tai setText()-kutsumisen yhteydessä korvataan elementin avaus- ja lopputunnisteiden välillä oleva sisältö.
Komponenttien poistaminen
Lisäksi komponenttien lisäämiseen Element:iin 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:istä.
Komponenttien hakeminen
Suuntautuaksesi Element:issä oleviin lapsikomponentteihin tai näitä komponentteja koskeviin tietoihin, seuraavat menetelmät ovat käytettävissä:
-
getComponents(): Tämä menetelmä palauttaa JavaList:n kaikistaElement:in lapsista. -
getComponents(String id): Tämä menetelmä on samanlainen kuin yllä oleva, mutta se ottaa palvelinpuolen tietyn komponentin ID:n ja palauttaa sen, jos se löytyy. -
getComponentCount(): PalauttaaElement:issä olevien lapsikomponenttien määrän.
JavaScript-funktioiden kutsuminen
Element-komponentti tarjoaa kaksi API-menetelmää, joiden avulla JavaScript-funktioita voidaan kutsua HTML-elementeissä.
-
callJsFunction(String functionName, Object... arguments): Tämä menetelmä ottaa funktion nimen merkkijonona ja valinnaisesti yhden tai useamman objektin funktion parametreina. Tämä menetelmä suoritetaan synkronisesti, mikä tarkoittaa, että suorittava säie on estetty kunnes JS-menetelmä palauttaa, ja tämä johtaa vuorovaikutukseen. Funktion tulokset palautetaanObject-tyyppisinä, jotka voidaan muuntaa ja käyttää Javassa. -
callJsFunctionAsync(String functionName, Object... arguments): Kuten edellisessä menetelmässä, voidaan antaa funktion nimi ja valinnaiset argumentit. Tämä menetelmä suoritetaan asynkronisesti eikä estää suorittavaa säiettä. Se palauttaaPendingResult:n, joka mahdollistaa lisävuorovaikutuksen funktion ja sen datan kanssa.
Parametrien välittäminen
Argumentit, jotka jaetaan näille menetelmille, joita käytetään JS-funktioiden suorittamisessa, sarjoitetaan JSON-taulukkona. Kaksi huomattavaa argumenttityyppiä käsitellään seuraavasti:
this: Käyttämälläthis-avainsanaa annetulle metodille annetaan viittaus asiakaspuolen version kutsuvasta komponentista.Component: Kaikki Java-komponentti-instanssit, jotka annetaan johonkin JsFunction-menetelmistä, korvataan asiakaspuolen version komponentista.
Sekä synkroniset että asynkroniset funktiokutsut odottavat, kunnes Element on lisätty DOM:iin ennen funktion suorittamista, mutta callJsFunction() ei odota, että mitään component-argumentteja liitetään, mikä voi johtaa epäonnistumiseen. Toisaalta, callJsFunctionAsync()-kutsut voivat jäädä ikuisesti kesken, jos komponenttiargumentteja ei liitetä koskaan.
Alla olevassa demossa Focus search -valinta kutsuu alkuperäistä focus()-menetelmää hakukentässä callJsFunctionAsync()-kutsulla. Tämän seurauksena käytetään PendingResult:ia varmistaakseen kutsun toastilla, kun asynkroninen toiminto on valmis.
Näytä koodi
- ElementSearchView.java
- elementSearch.css
JavaScriptin suorittaminen
Nimettömien funktioiden kutsumisen lisäksi Element voi suorittaa raakkaskriptejä, jotka on rajattu kyseiseen elementtiin executeJs, executeJsAsync ja executeJsVoidAsync -menetelmillä. Katso Suorita JavaScript näitä menetelmiä varten, niiden synkronista ja asynkronista käyttäytymistä varten sekä kuinka palautetut arvot muuntuvat Java-tyypeiksi.