Best practice per la descrizione programmatica del comportamento di forme di input complesse

3

Abbiamo un modulo Web complesso (utilizziamo stack GWT / GXT) con molti elementi di input di tipi diversi (campi di testo, selezioni, caselle di controllo, pulsanti) e il comportamento di questi elementi dipende l'uno dall'altro.

Ora significa che, per impostare correttamente lo stato degli elementi del modulo, è necessario sapere che cosa è successo (input dell'utente o evento proveniente dal server) e stato di altri elementi di quel modulo.

Quindi, la domanda è: quali sono le migliori pratiche per mantenere il codice per un modulo Web così complesso in uno stato pulito e comprensibile? Ora sembra che la soluzione ideale impiegherebbe qualche forma di DSL dichiarativa per descrivere tale comportamento.

Il brain storming iniziale prodotto seguendo una sorta di DSL Java (questo è solo per dare un'idea di cosa intendo, non esiste alcun DSL reale al momento):

private Event whenStopOrderChanged;
private Predicate parentPriceValid;
private Command calculateStopPrice;

public void initRules() {
    whenStopOrderChanged.and(parentPriceValid).then(calculateStopPrice);
}

Quindi, potresti condividere le tue idee / esperienze per risolvere questo tipo di compito?

    
posta Victor Sorokin 27.01.2015 - 11:56
fonte

1 risposta

2

Quei campi modulo fanno parte del livello di presentazione. Dovresti avere un modello di vista, fondamentalmente un modello per quella presentazione. That viewModel deve avere l'intero stato per i campi del modulo. Lo stato dovrebbe essere: il loro valore, il loro abilitato / disabilitato, ecc ...

Quindi, quando presenti questi campi nella schermata dovrai caricare lo stato da viewModel. E dopo che l'utente interagisce, ci sarà un nuovo stato per questi campi: sincronizzerete il viewmodel con il nuovo stato.

Per cosa? Perché se apri una nuova scheda nel browser web vedrai una scena aggiornata con le ultime modifiche.

Dove vive viewModel? Nella sessione.

    
risposta data 10.05.2015 - 22:59
fonte

Leggi altre domande sui tag