Siirry pääsisältöön

Data Binding

Avaa ChatGPT:ssä

webforJ sisältää tietosidontatoiminnon, joka integroi käyttöliittymäkomponentit taustakannan datamalleihin Java-sovelluksissa. Tämä toiminto ylittää rajan käyttöliittymän ja datapinnan välillä niin, että käyttöliittymän muutokset heijastuvat datamalliin ja päinvastoin, vähentäen tapahtumien käsittelyn ja datan synkronoinnin monimutkaisuutta.

AI skill available

The webforj-building-forms skill can build forms with binding, validation, and input masks. After installing the webforJ AI plugin, ask your assistant:

  • "Build a registration form bound to my User bean."
  • "Add a phone number input with format-as-you-type."
  • "Format this Table column as currency."

Konsepti

Seuraava esittely näyttää yksinkertaisen webforJ-sovelluksen supermiehen rekisteröimiseksi käyttäen webforJ:n tietosidontatoimintoa. Sovellus koostuu kahdesta pääosasta: HeroRegistration.java ja Hero.java.

HeroRegistration.java-tiedostossa koodi konfiguroi käyttäjäliittymän, jossa on TextField sankarin nimen syöttämistä varten, ComboBox supervoiman valitsemiseksi ja Button rekisteröinnin lähettämiseksi.

Hero-luokka määrittelee datamallin validointirajoitteilla sankarin nimen ja voiman osalta. Syötteiden on oltava voimassa ja noudatettava määriteltyjä kriteerejä, kuten pituus ja malli.

Sovellus käyttää BindingContext-luokkaa sitomaan käyttöliittymäkomponentteja Hero-objektin 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ätön", "LaserNäkö", "Nopeus", "Teleportaatio");

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

// heijasta bean-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 datan sidontaa, jolloin datamallin muutokset päivittävät käyttöliittymää ja käyttöliittymän käyttäjävuorovaikutukset päivittävät datamallia.

  • Validointituki: Integroi kattavia validointimekanismeja, joita voit räätälöidä ja laajentaa. Kehittäjät voivat toteuttaa omia validointisääntöjään tai käyttää olemassa olevia validointikehyksiä, kuten Jakarta Validointia, vahvistamaan datan eheyttä ennen mallin päivittämistä.

  • Laajennettavuus: Voidaan helposti laajentaa tukemaan erilaisia käyttöliittymäkomponentteja, datamuunnoksia ja monimutkaisia validointitilanteita.

  • Annotaatioihin perustuva konfigurointi: Käyttää annotaatioita minimointikoodin määrää, mikä tekee käyttöliittymäkomponenttien ja datamallien välisistä sidoksista deklaratiivisia ja helppoja hallita.

Aiheet