Siirry pääsisältöön

Objekti- ja merkkijonotaulukot

Avaa ChatGPT:ssä

ObjectTable, SessionObjectTable ja StringTable tarjoavat staattisen pääsyn jaettuun dataan webforJ-ympäristössä. Kaikki ovat käytettävissä mistä tahansa sovelluksessasi ja palvelevat eri tarkoituksia:

  • ObjectTable: Java-olioiden tallentamiseen ja hakemiseen koko sovelluksessa.
  • SessionObjectTable: Java-olioiden tallentamiseen ja hakemiseen HTTP-istuntotason kontekstissa.
  • StringTable: Pysyvien avain-arvo-merkkijonoparien työskentelyyn, joita käytetään usein konfiguraatio- tai ympäristötietona.

Nämä taulukot ovat saatavilla ympäristötasolla eivätkä vaadi instanssien hallintaa.

ObjectTable​

ObjectTable on globaalisti saatavissa oleva avain-arvo-kartta minkä tahansa Java-olion tallentamiseen. Se tarjoaa yksinkertaisen pääsyn jaettuun tilaan ilman, että mitään tarvitsisi instansioida tai konfiguroida. ObjectTable:llä on vain yksi instanssi, ja se tyhjennetään, kun sovellus päivitetään tai lopetetaan. Se on hyödyllinen skenaarioissa, joissa tarvitset tietojen saatavuutta useiden komponenttien tai kontekstien välillä ilman viittausketjun ylläpitämistä.

Olioiden asettaminen ja hakeminen​

ObjectTable.put("userInfo", new User("Alice", "admin"));
User user = (User) ObjectTable.get("userInfo");

Läsnäolon tarkistaminen​

if (ObjectTable.contains("userInfo")) {
// Avain on olemassa
}

Merkintöjen poistaminen​

ObjectTable.clear("userInfo");

Taulukon koko​

int total = ObjectTable.size();

SessionObjectTable 25.03​

SessionObjectTable tarjoaa staattisen pääsyn HTTP-istuntotason attribuutteihin, kun se toimii Jakarta Servlet 6.1+ -säiliössä. Toisin kuin ObjectTable, joka on sovellustason, SessionObjectTable tallentaa tietoja käyttäjän HTTP-istuntoon, mikä tekee niistä pysyviä pyyntöjen välillä, mutta ainutlaatuisia jokaiselle käyttäjäistunnolle.

Se noudattaa samaa API-mallia kuin ObjectTable johdonmukaisuuden vuoksi.

varoitus

SessionObjectTable:ssä tallennettujen objektien tulee toteuttaa Serializable tukeakseen istuntojen pysyvyyttä, replikoitumista ja passivointia servlet-säiliöissä.

Saatavuus BBjServices:ssa

Tätä ominaisuutta ei ole vielä saatavilla käytettäessä BBjServicesia versiolla 25.03.

Istunto-olioiden asettaminen ja hakeminen​

// ShoppingCart:in tulee toteuttaa Serializable
SessionObjectTable.put("cart", new ShoppingCart());
ShoppingCart cart = (ShoppingCart) SessionObjectTable.get("cart");

Läsnäolon tarkistaminen​

if (SessionObjectTable.contains("cart")) {
// Istunnolla on ostoskori
}

Istunto-merkintöjen poistaminen​

SessionObjectTable.clear("cart");

Istuntotaulukon koko​

int total = SessionObjectTable.size();

StringTable​

StringTable tarjoaa staattisen pääsyn globaalisiin merkkimuuttujiin. Se on pysyvä ja rajoittuu nykyiseen sovellukseen. Arvoja voidaan ohjelmallisesti muuttaa tai injektoida ympäristön konfiguraation kautta. Tämä mekanismi on erityisen hyödyllinen konfiguraatioarvojen, lippujen ja asetusten tallentamiseen, joita on oltava saatavilla koko sovelluksessa, mutta jotka eivät tarvitse kantaa monimutkaista dataa.

Merkkijonoarvojen hakeminen ja asettaminen​

StringTable.put("COMPANY", "Acme Corp");
String company = StringTable.get("COMPANY");

Esikonfiguroidut arvot konfiguraatiosta​

Voit määrittää avaimet webforj.conf -tiedostossasi:

webforj.stringTable = {
COMPANY: 'Acme Corp'
}

Sitten pääset niihin koodissa:

String val = StringTable.get("COMPANY");

Läsnäolon tarkistaminen​

if (StringTable.contains("COMPANY")) {
// Avain on asetettu
}

Avaimen tyhjentäminen​

StringTable.clear("COMPANY");