Data Binding
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.
- HeroRegistration.java
- Hero.java
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);
}
}
public class Hero {
@NotEmpty(message = "Nimi ei voi olla tyhjää")
@Length(min = 3, max = 20)
private String name;
@NotEmpty(message = "Määrittelemätön voima")
@Pattern(regexp = "Lentää|Näkymättömyys|Laservisio|Nopeus|Teleportaatio", message = "Virheellinen voima")
private String power;
public Hero(String name, String power) {
this.name = name;
this.power = power;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPower() {
return power;
}
public void setPower(String power) {
this.power = power;
}
public String toString() {
return "Nimi: " + name + ", Voima: " + power;
}
}
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
📄️ Bindings
A binding in webforJ linkittää tietyn Java Bean -ominaisuuden UI-komponenttiin. Tämä linkitys mahdollistaa automaattiset päivitykset UI:n ja taustamallin välillä. Jokainen binding voi käsitellä datan synkronointia, validointia, muunnosta ja tapahtumien hallintaa.
🗃️ Vahvistus
5 kohdetta
📄️ Transformation
Data transformations convert between the data types used in UI components and those in your data model. This keeps data types compatible and appropriately formatted when moving data between the frontend and backend of your applications.
📄️ Automatic Binding
webforJ tarjoaa useita ominaisuuksia, jotka tehostavat konfigurointia ja automaattista sitoutumisprosessia kehittäjille. Tämä osa osoittaa, miten näitä ominaisuuksia voidaan käyttää tehokkaasti.