Siirry pääsisältöön

Data Binding

Avaa ChatGPT:ssä

webforJ sisältää tietosidontatoiminnon, joka integroi käyttöliittymäkomponentit taustapalvelinmallien kanssa Java-sovelluksissa. Tämä ominaisuus yhdistää käyttöliittymän ja tietokerroksen niin, että käyttöliittymässä tapahtuvat muutokset heijastuvat tietomalliin ja päinvastoin, vähentäen tapahtumankäsittelyn ja tietosynkronoinnin 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 esittelee yksinkertaisen webforJ-sovelluksen, jonka avulla rekisteröidään supersankareita käyttäen webforJ:n tietosidontaa. Sovellus koostuu kahdesta pääosasta: HeroRegistration.java ja Hero.java.

HeroRegistration.java-koodissa konfiguroidaan käyttöliittymä TextFieldin avulla sankarin nimen syöttämiseen, ComboBox supervoiman valitsemiseen ja Button rekisteröinnin lähettämiseen.

Hero-luokka määrittelee tietomallin, jossa on käytettävissä sankarin nimen ja voiman validointirajoituksia. Syötteiden täytyy olla voimassa ja noudattaa määriteltyjä kriteerejä, kuten pituus ja malli.

Sovellus käyttää BindingContext-luokkaa sitomaan käyttöliittymäkomponentit Hero-olion ominaisuuksiin. Kun käyttäjä napsauttaa lähetysnappia, sovellus kirjoittaa lomakkeelle syötetyt tiedot takaisin Hero-bean-olioon, 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("Lennä", "Näkyvä", "Lasersäde", "Nopeus", "Teleportaatiot");

BindingContext<Hero> context = BindingContext.of(this, Hero.class, true);
Hero bean = new Hero("Teräsmies", "Lennä");

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

submit.onClick(e -> {
// kirjoita lomaketiedot 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 tietosidontaa, jonka avulla 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 tietomallia.

  • 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 tietojen eheyden 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 vähentämään boilerplate-koodia, jolloin sidokset käyttöliittymäkomponenttien ja tietomallien välillä ovat deklaratiivisia ja helppoja hallita.

Aiheet