Component Basics
Komponentit ovat perustavanlaatuisia rakennuspalikoita, jotka voidaan lisätä ikkunaan, tarjoten käyttäjäliittymän toiminnallisuutta ja mukautettua käyttäytymistä. webforJ:ssä Component
-luokka toimii kaikkien moottorin komponenttien perustana.
Elinkaaren hallinta
Komponenttien elinkaaren ymmärtäminen on välttämätöntä komponenttien tehokkaalle luomiselle, hallinnalle ja hyödyntämiselle. Seuraavissa kahdessa elinkaarivaiheessa on menetelmiä, joilla voidaan manipuloida niiden käyttäytymistä. Näitä menetelmiä ei tulisi kutsua suoraan käyttäjän toimesta.
Luo ja tuhoa koukut
Kaikkien Component
-luokkaa laajentavien luokkien on toteutettava toiminnallisuus, joka suoritetaan, kun Component
luodaan ja kun se tuhotaan. Tämä tapahtuu korvaamalla onCreate()
ja onDestroy()
-menetelmät vastaavasti.
onCreate()
onCreate()
-menetelmää kutsutaan, kun komponentti lisätään ikkunaan. Komponenttien luominen sisältää niiden alkuperäisen tilan ja toiminnallisuuden määrittämisen. Tässä määritellään, mitä komponentin tulisi tehdä sen ensimmäisellä luomisella. Olipa kyseessä muuttujien alustaminen, tapahtumakuuntelijoiden asettaminen tai muu asetus, onCreate()
-menetelmä on sisäänkäyntisi komponentin käyttäytymisen mukauttamiseen.
Tämä koukku vastaanottaa ikkunahypoteesin, joka mahdollistaa komponenttien lisäämisen, jotka sijaitsevat komponentin sisällä.
@Override
protected void onCreate(Window window) {
TextField text = new TextField();
Button btn = new Button();
window.add(text, btn);
}
onCreate()
-menetelmässä komponentti ja kaikki sen osat tulisi lisätä ikkunaan.
onDestroy()
Komponenttien tuhoaminen on olennainen osa resurssien hallintaa ja asianmukaisen siivouksen varmistamista. Komponentin tuhoaminen on tarpeen, kun sitä ei enää tarvita tai kun halutaan vapauttaa siihen liittyvät resurssit. Se mahdollistaa kehittäjän suorittaa siivoustehtäviä, kuten ajastinten pysäyttämistä, muistin vapauttamista tai tapahtumakuuntelijoiden irrottamista. Se myös mahdollistaa destroy()
-menetelmän kutsumisen mihin tahansa osakomponentteihin.
onDestroy()
-menetelmä on vastuussa destroy()
-menetelmän kutsumisesta mihin tahansa osakomponentteihin. Muutoin nämä komponentit jäävät edelleen olemassa DOM:iin, mutta niitä ei voida saavuttaa API:n kautta.
Asynkroninen liittäminen
whenAttached()
-menetelmä mahdollistaa toiminnallisuuden suorittamisen sen jälkeen, kun komponentti on lisätty ikkunaan. Tämä menetelmä palauttaa PendingResult
, joka mahdollistaa lisättyä määriteltyä käyttäytymistä suorittamaan asynkronisesti, kun komponentti on liitetty DOM:iin.
Toisin kuin edellisessä kolmessa menetelmässä, whenAttached()
on tarkoitettu käyttäjän nimenomaan kutsuttavaksi.
public class Demo extends App {
@Override
public void run() throws WebforjException {
Frame window = new Frame();
Button button = new Button();
/* Suora kutsu whenAttached(), joka näyttää
viestiruudun, kun painike on liitetty Frameen.*/
button.whenAttached().thenAccept( e -> {
showMessageDialog("Olen liitetty!", "Asynkroninen liittäminen");
});
// onCreate() -menetelmää kutsutaan
window.add(button);
}
}
Tarkkailijat
Tarkkailijat ovat keskeisessä asemassa komponenttien elinkaaritapahtumien seuraamisessa. Tarkkailijoita voidaan lisätä ja poistaa käyttäen addLifecycleObserver()
ja removeLifecycleObserver()
-menetelmiä, ja ne saavat ilmoituksia tapahtumista, kuten komponenttien luomisesta ja tuhoamisesta.
Lisäämällä tarkkailijoita voit tehdä toimia, kun komponentti luodaan tai tuhotaan. Tämä on erityisen hyödyllistä mukautetun logiikan toteuttamisessa tai erityisten skenaarioiden käsittelemisessä komponenttitapahtumien perusteella.
Button button = new Button();
button.addLifecycleObserver((button, lifecycleEvent) -> {
if (lifecycleEvent == ComponentLifecycleObserver.LifecycleEvent.DESTROY) {
// toteutettu logiikka, joka suoritetaan, kun painike tuhotaan
}
});
Komponentin ominaisuudet
Komponentin tunnisteet
Komponenttien ID:t toimivat ainutlaatuisina tunnisteina komponenteille, mikä mahdollistaa niiden hallinnan ja tilan tehokkaan käsittelyn.
Palvelinpuolen komponentin ID
Jokaiselle Component
-luokasta luodulle komponentille annetaan automaattisesti palvelinpuolen tunniste. Palvelinpuolen ID:t ovat olennaisia sisäiseen seurantaan ja komponenttien tunnistamiseen viitekehyksessä. Voit palauttaa palvelinpuolen komponentin ID:n käyttämällä getComponentId()
-menetelmää.
Tämä voi olla hyödyllistä monissa tilanteissa, joissa ainutlaatuinen, palvelinpuolen tunniste on tarpeen, kuten tietyistä komponenteista kysyttäessä säiliössä.
Asiakaspuolen komponentin ID
Asiakaspuolen ID:t mahdollistavat käyttäjän saada asiakasedustuksen palvelinpuolen komponentista, joka on luotu Javalla. Kaikilla tarjotuilla webforJ-komponenteilla on tämän ID:n toteutus. Jos haluat saada pääsyn ja käyttää asiakaspuolen komponenttia, voit suorittaa object.get()
asiakas-ID:llä saadaksesi halutun asiakaspuolen komponentin.
Tämä ID ei ole elementin ID-attribuutti DOM:ssa.
Alla olevassa esimerkissä onClick
-tapahtuma lisätään painikkeelle, joka sitten laukaistaan kutsumalla menetelmää asiakaspuolen komponentilla sen jälkeen, kun se on saatu käyttämällä object.get()
-menetelmää.
@Override
public void run() throws WebforjException {
Frame frame = new Frame();
Button btn = new Button("Napsauta minua");
btn.onClick(e -> {
showMessageDialog("Painiketta napsautettiin", "Tapahtuma tapahtui");
});
btn.whenAttached().thenAccept(e -> {
getPage().executeJs("objects.get('" + btn.getClientComponentId() + "').click()");
});
frame.add(btn);
}
Käyttäjädata
Component
-luokka mahdollistaa lisätietojen sisällyttämisen komponenttiin käyttämällä setUserData()
-menetelmää. Nämä tiedot ovat käytettävissä vain komponentin palvelinpuolella getUserData()
-menetelmän kautta, eikä niitä lähetetä asiakkaalle.
Tämä on varsin hyödyllistä, kun on tietoa, joka tulisi sisällyttää komponenttiin ja kun tämän tiedon pitäisi olla käytettävissä ilman, että siihen tarvitsisi siirtyä asiakkaalle sen hakemiseksi.