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.
Käyttäen BindingContext.of
BindingContext.of
-menetelmä sitoo automaattisesti käyttöliittymäkomponentit määritellyn bean-luokan ominaisuuksiin, yksinkertaistaen sitoutumisprosessia ja vähentäen manuaalista asetusta. Se kohdistaa sitoutettavat komponentit, jotka on ilmoitettu kenttinä lomakkeessa tai sovelluksessa, beanin ominaisuuksiin niiden nimien perusteella.
public class HeroRegistration extends App {
// Sitoutettavat komponentit
TextField name = new TextField("Tekstikenttä");
ComboBox power = new ComboBox("Voima");
// ...
@Override
public void run() throws WebforjException {
BindingContext<Hero> context = BindingContext.of(this, Hero.class, true);
// ...
}
}
public class Hero {
private String name;
private String power;
// Asetus ja haku
}
UseProperty
-annotaatio
Käytä UseProperty
-annotaatiota määrittääksesi bean-ominaisuuden nimen, kun käyttöliittymän kentän nimi ei vastaa bean-ominaisuuden nimeä.
public class HeroRegistration extends App {
// Sitoutettavat komponentit
@UseProperty("name")
TextField nameField = new TextField("Tekstikenttä");
ComboBox power = new ComboBox("Voima");
// ...
}
Yllä olevassa esimerkissä käyttöliittymän kentän nimi on nameField
, mutta bean-ominaisuus on name
. Voit merkitä käyttöliittymän kentän bean-ominaisuuden nimellä varmistaaksesi oikean sitoutumisen.
BindingExclude
-annotaatio
Käytä BindingExclude
-annotaatiota sulkeaksesi komponentin automaattisista sitoutumisvaatimuksista, kun haluat sitoa sen manuaalisesti tai sulkea sen kokonaan pois.
public class HeroRegistration extends App {
// Sitoutettavat komponentit
@UseProperty("name")
TextField nameField = new TextField("Tekstikenttä");
@BindingExclude
ComboBox power = new ComboBox("Voima");
// ...
}
UseValidator
-annotaatio
Käytä UseValidator
-annotaatiota määrittääksesi validaattorit, jotka pakottavat lisävaatimuksia sitoutumisen aikana. Validaattorit sovelletaan siinä järjestyksessä, jossa ne ilmoitat.
public class UserRegistration extends App {
@UseValidator(EmailValidator.class)
TextField email = new TextField("Sähköpostiosoite");
}
UseTransformer
-annotaatio
Käytä UseTransformer
-annotaatiota määrittääksesi muunnosluokka suoraan käyttöliittymäkentälle. BindingContext
soveltaa automaattisesti määritettyä muunnosta.
public class UserRegistration extends App {
@UseProperty("date")
@UseTransformer(DateTransformer.class)
DateField dateField = new DateField("Päivämääräkenttä");
}
BindingReadOnly
-annotaatio
Käytä BindingReadOnly
-annotaatiota merkitäksesi sitoutumisen vain luku -tilaksi.
public class UserRegistration extends App {
@BindingReadOnly
TextField IDField = new TextField("Käyttäjätunnus");
}
BindingRequired
-annotaatio
Käytä BindingRequired
-annotaatiota merkitäksesi sitoutuminen pakolliseksi. Katso myös pakollisten sitoutumisten tunnistaminen.
public class UserRegistration extends App {
@BindingRequired
TextField emailField = new TextField("Käyttäjän sähköposti");
}
Datan automaattinen kirjoittaminen
Parantaaksesi sovellusten reagointikykyä ja dynaamisuutta voit käyttää observe
-menetelmää. Tämä menetelmä varmistaa, että käyttöliittymäkomponenteissa tapahtuvat muutokset siirtyvät välittömästi datamalliin. Se on erityisen hyödyllinen, kun tarvitset jatkuvaa synkronointia datamallin ja käyttöliittymän välillä.
observe
-menetelmä rekisteröi ValueChangeEvent
-kuuntelijan kaikille sitoutumisille kontekstissa seuraamaan käyttäjän tekemät muutoksia ja kirjoittaa nämä muutokset välittömästi sidottuihin ominaisuuksiin, jos ne ovat voimassa. Kun kutsut tätä menetelmää ensimmäisen kerran, se heijastaa bean-ominaisuudet käyttöliittymäkomponenteissa.
Tässä esimerkki kuinka käyttää observe
:
Hero bean = new Hero("Superman", "Fly");
BindingContext<Hero> context = BindingContext.of(this, Hero.class, true);
context.observe(bean);
context.onValidate(e -> {
submit.setEnabled(e.isValid());
});
submit.onClick(e -> {
ValidationResult results = context.validate();
if (results.isValid()) {
// Toimi beanin kanssa.
}
});
Tämä automaattinen sitoutuminen on suuntautunutta; päivitykset heijastuvat malliin, kun päivität käyttöliittymäkomponentteja, mutta muutokset mallissa heijastuvat käyttöliittymäkomponentteihin vain kerran, kun kutsut menetelmää ensimmäisen kerran.
Vaikka observe
lisää sovellusten interaktiivisuutta, on tärkeää käyttää sitä harkiten:
- Suorituskykyvaikutus: Tiheät päivitykset voivat vaikuttaa suorituskykyyn, erityisesti monimutkaisilla malleilla tai hitailla taustapalveluilla.
- Käyttäjäkokemus: Automaattiset päivitykset eivät saisi häiritä käyttäjän kykyä syöttää tietoja mukavasti.
Pakollisten sitoutumisten tunnistaminen
Kun merkitset sitoutumisen pakolliseksi, se merkitsee komponentin pakolliseksi, edellyttäen että komponentti tukee tätä tilaa RequiredAware
-rajapinnan kautta. Sitoutuminen ei itse valvo tätä tilaa, vaan asettaa sen komponentille, kun se on sovellettavissa.
BindingContext<User> context = new BindingContext<>(User.class, true);
context
.bind(emailField, "email")
.required()
.add()
Käyttäessäsi Jakarta-annotaatioita sitoutuminen voi automaattisesti tunnistaa pakollisen tilan perustuen siihen, onko bean-ominaisuuksilla jokin seuraavista annotaatioista:
@NotNull
@NotEmpty
@NotBlank
@Size