Siirry pääsisältöön

Data Binding

Avaa ChatGPT:ssä

webforJ sisältää tietosidontatoiminnon, joka integroi käyttöliittymäkomponentit taustatietomalleihin Java-sovelluksissa. Tämä toiminto ylittää kuilun käyttöliittymän ja tietokerroksen välillä, jotta käyttöliittymässä tapahtuvat muutokset heijastuvat tietomalliin ja päinvastoin, vähentäen tapahtumien käsittelyn ja tietosynkronoinnin monimutkaisuutta.

Konsepti

Seuraava esittely näyttää yksinkertaisen webforJ-sovelluksen, joka rekisteröi supersankareita hyödyntäen webforJ-tietosidontaa. Sovellus koostuu kahdesta pääosasta: HeroRegistration.java ja Hero.java.

HeroRegistration.java-tiedostossa koodi määrittää käyttäjäliittymän, jossa on TextField sankarin nimen syöttämiseen, ComboBox supervoiman valitsemiseen ja Button rekisteröinnin lähettämiseen.

Hero-luokka määrittelee tietomallin, johon liittyy vahvistusrajoituksia sankarin nimen ja voiman osalta. Syötteiden on oltava voimassa ja niiden on noudatettava määriteltyjä kriteereitä, kuten pituutta ja kaavaa.

Sovellus käyttää BindingContext-konseptia sitomaan käyttöliittymäkomponentit Hero-olion ominaisuuksiin. Kun käyttäjä napsauttaa lähetyspainiketta, sovellus kirjoittaa lomakkeeseen syötetyt tiedot takaisin Hero-beanille, jos ne ovat voimassa.

public class HeroRegistration extends App {

private TextField name = new TextField("Tekstikenttä");
private ComboBox power = new ComboBox("Voima");
private Button submit = new Button("Lähetä hakemus");
private FlexLayout layout = FlexLayout.create(name, power, submit).vertical().build()
.setStyle("margin", "20px auto").setMaxWidth("400px");

@Override
public void run() throws WebforjException {
power.insert("Lentää", "Näkymättömyys", "Laservisio", "Nopeus", "Teleportaatio");

BindingContext<Hero> context = BindingContext.of(this, Hero.class, true);
Hero bean = new Hero("Superman", "Lentää");

// heijastaa beanin tiedot lomakkeeseen
context.read(bean);

submit.onClick(e -> {
// kirjoita lomaketiedot takaisin beanille
ValidationResult results = context.write(bean);

if (results.isValid()) {
// tee jotain beanin kanssa
// repository.persist(bean)
}
});

Frame frame = new Frame();
frame.add(layout);
}
}

Keskeiset ominaisuudet

  • Kaksisuuntainen sidonta: Tukee kaksisuuntaista tietosidontaa, jolloin tietomallissa tapahtuvat muutokset päivittävät käyttöliittymän, ja käyttöliittymässä tapahtuvat käyttäjävuorovaikutukset päivittävät tietomallin.

  • Vahvistustuki: Integroi kattavat vahvistusmekanismit, joita voit mukauttaa ja laajentaa. Kehittäjät voivat toteuttaa omia vahvistussääntöjään tai käyttää olemassa olevia vahvistuskehyksiä, kuten Jakarta Validation, varmistaakseen tietojen eheyden ennen mallin päivittämistä.

  • Laajennettavuus: Voidaan helposti laajentaa tukemaan erilaisia käyttöliittymäkomponentteja, tietomuunnoksia ja monimutkaisempia vahvistustilanteita.

  • Annotaatioihin perustuva konfigurointi: Käyttää annotaatioita vähentääkseen ylikirjoituskoodia, jolloin käyttöliittymäkomponenttien ja tietomallien välinen sidonta on deklaratiivista ja helppoa hallita.

Aiheet

Avaa ChatGPT:ssä