È stato segnalato dal test che è talvolta possibile premere un pulsante più di una volta se la risposta non è resa abbastanza veloce, causando diverse invocazioni del codice di back-end, che non vogliamo.Come gestire più segnalazioni prima che la risposta sia resa?
L'applicazione è Java EE 6 profilo Web che utilizza JSF 2.0 all'interno di Glassfish 3.1.1.
mi chiedevo come questo dovrebbe essere correttamente trattati, e hanno pensato di alcuni scenari:
- Sottoporre dovrebbe disattivare tutti i pulsanti che utilizzano JavaScript mentre la risposta viene reso.
- Un flag nello scenario Session che dice che è già attivo, quindi il codice sensibile viene saltato e passa al re-rendering della risposta per l'invio precedente.
- Un blocco sincronizzato che ritarda l'elaborazione fino al completamento della richiesta precedente. Quindi dovrebbe essere rilevato che è già stato elaborato e saltato.
- Utilizzando uno dei "nuovi" ambiti come la conversione per gestire il rilevamento?
La mia sensazione istintiva immediata è che l'approccio migliore è quello di avere blocchi di codice sensibili atomici, ma il problema è con il rendering della risposta corretta.
Come devo affrontare questo?
Hai provato qualcosa come jQuery blockui? Il blocco sincronizzato BTW non funzionerà su un cluster. –
Non è stato ancora provato nulla. Questo è al "bene, come faccio?" palcoscenico. –