Elements
webforJ-kehittäjillä on mahdollisuus valita ei vain rikkaasta komponenttikirjastosta, vaan myös integroida komponentteja muualta. Tämän helpottamiseksi Element-komponenttia voidaan käyttää yksinkertaistamaan minkä tahansa integraatiota yksinkertaisista HTML-elementeistä monimutkaisempihin räätälöityihin verkkokomponentteihin.
Element-komponentti ei ole laajennettavissa, eikä se ole kaikkien webforJ:n komponenttien peruskomponentti. Lue lisää webforJ:n komponenttihierarkiasta lukemalla tämä artikkeli.
Näytä koodi
- ElementInputDemoView.java
- elementInput.css
Tapahtumien lisääminen
Jotta voit hyödyntää elementin mukana tulevia tapahtumia, voit käyttää Element-komponentin addEventListener-metodeja. Tapahtuman lisääminen vaatii vähintään tapahtuman tyypin/nimen, jota komponentti odottaa, sekä kuuntelijan, joka lisätään tapahtumaan.
On myös lisä vaihtoehtoja, joilla voit mukauttaa tapahtumia edelleen käyttämällä Tapahtumaasetuksia.
Näytä koodi
- ElementInputEventView.java
- elementInputEvent.css
Komponenttien interaktiot
Element-komponentti toimii säilönä muille komponenteille. Se tarjoaa tavan organisoida ja hankkia tietoa lapsikomponenteista ja tarjoaa selvän joukon toimintoja näiden lapsikomponenttien lisäämiseksi tai poistamiseksi tarvittaessa.
Lapsikomponenttien lisääminen
Element-komponentti tukee lapsikomponenttien koostumista. Kehittäjät voivat organisoida ja hallita monimutkaisia käyttöliittymän rakenteita lisäämällä komponentteja lapsina Elementille. Kolme metodia on olemassa sisällön asettamiseksi Elementiin:
-
add(Component... components): Tämä metodi sallii yhden tai useamman komponentin lisäämisen valinnaiseenString-arvoon, joka määrittelee erityisen slotin käytettäväksi Verkkokomponentin kanssa. Slotin ohittaminen lisää komponentin HTML-tägien väliin. -
setHtml(String html): Tämä metodi ottaa metodille syötetynString-arvon ja injektoi sen HTML:nä komponenttiin. RiippuenElementistä, tämä voidaan renderöidä eri tavoilla. -
setText(String text): Tämä metodi käyttäytyy samalla tavalla kuinsetHtml()-metodi, mutta injektoi kirjaimellista tekstiäElementtiin.
Näytä koodi
- ElementInputTextView.java
- elementInput.css
setHtml()- tai setText()-kutsuminen korvataan sisällön, joka tällä hetkellä sijaitsee elementin avaavien ja sulkevien tagien välissä.
Komponenttien poistaminen
Lapsikomponenttien lisäämisen lisäksi Elementissä on toteutettu seuraavat metodit erilaisten lapsikomponenttien poistamiseksi:
-
remove(Component... components): Tämä metodi ottaa yhden tai useamman komponentin ja poistaa ne lapsikomponenteina. -
removeAll(): Tämä metodi poistaa kaikki lapsikomponentitElementistä.
Komponenttien hakeminen
Jotta voit hankkia erilaisia lapsikomponentteja, jotka ovat läsnä Elementissä, tai tietoa näistä komponenteista, seuraavat metodit ovat käytettävissä:
-
getComponents(): Tämä metodi palauttaa JavaList:in kaikistaElementinlapsista. -
getComponents(String id): Tämä metodi on samanlainen kuin yllä oleva metodi, mutta se ottaa palvelinpuolen ID:n tietystä komponentista ja palauttaa sen, kun se löytyy. -
getComponentCount(): Palauttaa lapsikomponenttien määrän, joka on läsn äElementissä.
JavaScript-funktioiden kutsuminen
Element-komponentti tarjoaa kaksi API-metodia, jotka mahdollistavat JavaScript-funktioiden kutsumisen HTML-elementeissä.
-
callJsFunction(String functionName, Object... arguments): Tämä metodi ottaa funktion nimen merkkijonona ja valinnaisesti yhden tai useamman objektin parametrina. Tämä metodi suoritetaan synnkkisesti, mikä tarkoittaa, että suorittava säie on estetty, kunnes JS-metodi palauttaa, ja se aiheuttaa kierroksen. Funktion tulokset palautetaanObject-tyyppinä, joka voidaan muuntaa ja käyttää Javassa. -
callJsFunctionAsync(String functionName, Object... arguments): Kuten edellisessä metodissa, funktion nimen ja valinnaiset argumentit voidaan siirtää. Tämä metodi suoritetaan asynkronisesti eikä estää suorittavaa säiettä. Se palauttaaPendingResult, joka mahdollistaa lisävuorovaikutuksen funktion ja sen kuorman kanssa.
Parametrien välittäminen
Nämä metodit, joita käytetään JS-funktioiden suorittamisessa, vastaanottavat argumentit, jotka sarjoitetaan JSON-taulukoksi. Kaksi huomionarvoista argumenttityyppiä käsitellään seuraavasti:
this: Käyttämälläthis-avainsanaa annetaan metodille viittaus kutsuvan komponentin asiakaspuolen versioon.Component: Kaikki Java-komponentti-instanssit, jotka siirretään yhteen JsFunction-metodeista, korvataan komponentin asiakaspuolen versiolla.
Sekä synkroninen että asynkroninen funktion kutsuminen odottavat, että Element on lisätty DOM:iin ennen funktion suorittamista, mutta callJsFunction() ei odota mitään component-argumentteja liitettäväksi, mikä voi johtaa epäonnistumiseen. Toisin sanoen, callJsFunctionAsync()-kutsuminen ei ehkä koskaan valmistu, jos komponenttiargumenttia ei koskaan liitetä.
Alla olevassa demossa tapahtuma lisätään HTML Nappiin. Tämä tapahtuma suoritetaan sitten ohjelmallisesti kutsumalla callJsFunctionAsync()-metodia. Saadun PendingResult -arvoa käytetään sitten luomaan toinen viestiruudukas, kun asynkroninen toiminto on valmis.
Näytä koodi
- ElementInputFunctionView.java
- elementInput.css
JavaScriptin suorittaminen
Lisäksi JavaScriptin suorittaminen sovelluskerroksessa, sen on mahdollista suorittaa JavaScriptiä Element-tasolla. Tällä tasolla tapahtuva suorittaminen mahdollistaa HTML-elementin kontekstin sisällyttämisen suoritukseen. Tämä on tehokas työkalu, joka toimii kehitt äjän väylänä vuorovaikutteisiin kykyihin asiakaspuolen ympäristöissä.
Samanlainen kuin funktioiden suorittaminen, JavaScriptin suorittaminen voidaan tehdä synkronisesti tai asynkronisesti seuraavilla metodeilla:
-
executeJs(String script): Tämä metodi ottaaString:in, joka suoritetaan JavaScript-koodina asiakkaalla. Tämä skripti suoritetaan synnkkisesti, mikä tarkoittaa, että suorittava säie on estetty, kunnes JS-suoritus palautuu, ja se aiheuttaa kierroksen. Funktion tulokset palautetaanObject-tyyppinä, joka voidaan muuntaa ja käyttää Javassa. -
executeJsAsync(String script): Kuten edellisessä metodissa, siirrettyString-parametri suoritetaan JavaScript-koodina asiakkaalla. Tämä metodi suoritetaan asynkronisesti eikä estää suorittavaa säiettä. Se palauttaaPendingResult, joka mahdollistaa lisävuorovaikutuksen funktion ja sen kuorman kanssa.
Nämä metodit pääsevät component-avainsanaan, mikä antaa JavaScript-koodille pääsyn komponentin asiakaspuolen instanssiin, joka suorittaa JavaScriptin.