Overslaan naar hoofdinhoud

Object and String Tables

Openen in ChatGPT

De ObjectTable, SessionObjectTable en StringTable bieden statische toegang tot gedeelde gegevens in een webforJ-omgeving. Ze zijn overal in je app toegankelijk en dienen verschillende doeleinden:

  • ObjectTable: Voor het opslaan en ophalen van Java-objecten in je app.
  • SessionObjectTable: Voor het opslaan en ophalen van Java-objecten in de HTTP-sessie.
  • StringTable: Voor het werken met persistente sleutel-waarde stringparen, vaak gebruikt voor configuratie of omgeving-achtige gegevens.

Deze tabellen zijn beschikbaar op het omgevingsniveau en vereisen geen instantiebeheer.

ObjectTable

ObjectTable is een wereldwijd toegankelijke sleutel-waarde map voor het opslaan van elk Java-object. Het biedt eenvoudige toegang tot de gedeelde status zonder dat er iets geconfigureerd of geïnstantieerd hoeft te worden. Er is slechts één instantie van ObjectTable en deze wordt gewist wanneer de app wordt vernieuwd of beëindigd. Het is nuttig voor scenario's waarin je gegevens beschikbaar wilt maken over meerdere componenten of contexten zonder een referentieketen te onderhouden.

Objecten instellen en ophalen

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

Controleren op aanwezigheid

if (ObjectTable.contains("userInfo")) {
// Sleutel bestaat
}

Invoer verwijderen

ObjectTable.clear("userInfo");

Tabelgrootte

int total = ObjectTable.size();

SessionObjectTable 25.03

SessionObjectTable biedt statische toegang tot HTTP-sessie-attributen wanneer deze draait in een Jakarta Servlet 6.1+ container. In tegenstelling tot ObjectTable, dat app-scope heeft, slaat SessionObjectTable gegevens op in de HTTP-sessie van de gebruiker, waardoor deze persistent is tussen verzoeken maar uniek voor elke gebruikerssessie.

Het volgt hetzelfde API-patroon als ObjectTable voor consistentie.

waarschuwing

Objecten die zijn opgeslagen in SessionObjectTable moeten Serializable implementeren om sessie persistentie, replicatie en passivatie in servletcontainers te ondersteunen.

Beschikbaarheid in BBjServices

Deze functie is nog niet beschikbaar bij gebruik van BBjServices in versie 25.03.

Sessieobjecten instellen en ophalen

// ShoppingCart moet Serializable implementeren
SessionObjectTable.put("cart", new ShoppingCart());
ShoppingCart cart = (ShoppingCart) SessionObjectTable.get("cart");

Controleren op aanwezigheid

if (SessionObjectTable.contains("cart")) {
// Sessie heeft winkelwagentje
}

Sessie-invoer verwijderen

SessionObjectTable.clear("cart");

Sessie tafelgrootte

int total = SessionObjectTable.size();

StringTable

StringTable biedt statische toegang tot globale stringvariabelen. Het is persistent en scope binnen de huidige app. Waarden kunnen programmatig worden gewijzigd of geïnjecteerd via omgeving configuratie. Dit mechanisme is bijzonder nuttig voor het opslaan van configuratiewaarden, vlaggen en instellingen die toegankelijk moeten zijn in de hele app, maar die geen complexe gegevens hoeven te dragen.

Stringwaarden ophalen en instellen

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

Voor-geconfigureerde waarden uit configuratie

Je kunt sleutels definiëren in je webforj.conf bestand:

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

Toegang krijgen in code:

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

Controleren op aanwezigheid

if (StringTable.contains("COMPANY")) {
// Sleutel is ingesteld
}

Een sleutel wissen

StringTable.clear("COMPANY");