Siirry pääsisältöön

Data Binding

Avaa ChatGPT:ssä

webforJ sisältää tiedonsidontatoiminnon, joka integroi UI-komponentit saumattomasti taustadatamalleihin Java-sovelluksissa. Tämä ominaisuus ylittää rajan UI:n ja datakerroksen välillä, varmistaen, että muutokset UI:ssa heijastuvat datamalliin ja päinvastoin. Tuloksena paranee käyttäjäkokemus ja vähenee tapahtumankäsittelyn ja datan synkronoinnin monimutkaisuus.

Käsite

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

Tiedostossa HeroRegistration.java koodi konfiguroi käyttöliittymän TextField:llä sankarin nimen syöttämistä varten, ComboBox:illa supervoiman valitsemista varten ja Button:illa rekisteröinnin lähettämistä varten.

Hero-luokka määrittelee datamallin validointirajoituksilla sankarin nimen ja voiman osalta, varmistaen, että syötteet ovat voimassa ja noudattavat määrättyjä kriteerejä, kuten pituus ja malli.

Sovellus käyttää BindingContext-luokkaa sitomaan UI-komponentit Hero-olion ominaisuuksiin. Kun käyttäjä napsauttaa lähetyspainiketta, sovellus kirjoittaa lomakkeessa syötetyt tiedot taaksepäin Hero-bean:iin, 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("Rekisteröi 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ätön", "Lasersilmä", "Nopeus", "Siirtyminen");

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

// heijasta bean-data lomakkeeseen
context.read(bean);

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

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

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

Avainominaisuudet

  • Kaksisuuntainen sidonta: Tukee kaksisuuntaista tiedonsidontaa, jolloin muutokset datamallissa päivittävät UI:ta ja käyttäjäinteraktiot UI:ssa päivittävät datamallia.

  • Validointituki: Integroi kattavat validointimekanismit, joita voit mukauttaa ja laajentaa. Kehittäjät voivat toteuttaa omia validointisääntöjään tai käyttää olemassa olevia validointikehyksiä, kuten Jakarta Validation, varmistaakseen datan eheyden ennen mallin päivittämistä.

  • Laajennettavuus: Voidaan helposti laajentaa tukemaan erilaisia UI-komponentteja, datamuunnoksia ja monimutkaisia validointiskenaarioita.

  • Annotaatio-ohjattu konfigurointi: Hyödyntää annotaatioita minimoidakseen turhakoodin, jolloin sidokset UI-komponenttien ja datamallien välillä ovat deklaratiivisia ja helppoja hallita.

Aiheet

Avaa ChatGPT:ssä