Come utilizzare una pagina Web per creare e modificare le voci del database

2

Il mio team e io stiamo sviluppando un'applicazione web java che consente ai nostri amministratori di creare e modificare "metodi" che possono essere successivamente visualizzati da altri utenti.

Al momento stiamo discutendo il modo migliore per implementarlo e mirare a uno screenflow simile alla creazione / modifica di eventi nel calendario di Google.

vale a dire. L'amministratore inizia su una pagina che mostra tutti i "metodi" attuali e un pulsante "crea un nuovo metodo". Se sceglie di modificare un "metodo" viene reindirizzato alla pagina "MODIFICA" dove può modificare gli attributi del metodo (modificandolo e quindi inviandolo tramite AJAX per aggiornare l'attributo). Se sceglie di creare un nuovo metodo, dovrebbe essere reindirizzato a una pagina che ha lo stesso aspetto, cambiando gli attributi, ecc. Ma se non cambia nulla e torna indietro / chiude il browser, il metodo non dovrebbe essere salvato.

Al momento abbiamo 2 idee per farlo, entrambi con alcuni svantaggi:

A) Crea il "metodo" con i valori predefiniti e reindirizza l'utente alla pagina di modifica. Svantaggio: se l'utente dovesse tornare indietro o chiudere il browser, abbiamo creato una voce non necessaria nel db, che il proprietario del nostro prodotto desidera evitare. (C'è un pulsante 'cancella', ma ciò richiederebbe un'altra azione da parte dell'amministratore)

B) Creiamo pagine separate per creare e modificare (e i corrispondenti gestori). Svantaggio: dobbiamo creare e mantenere 2 (o anche 4) file che fanno praticamente la stessa cosa.

C'è un modo per negare i nostri svantaggi o un'altra alternativa su come implementare questo? Stiamo usando Java Web Projects, JSP e Servlet come tecnologia.

    
posta Nijin22 28.05.2015 - 12:04
fonte

3 risposte

0

È possibile creare un record fittizio nel database con i valori predefiniti, quindi passare un flag alla pagina di modifica per indicare che deve essere creato anziché aggiornare al salvataggio? Se non è possibile passare un flag, sarebbe possibile fornire al dummy un ID univoco che si sarebbe poi codificato nella pagina di modifica per indicare che il record dovrebbe essere creato anziché aggiornato?

    
risposta data 29.05.2015 - 17:55
fonte
0

Questo è un problema comune che incontriamo anche nei nostri strumenti. Una buona soluzione UI che usiamo è mostrata da un prodotto di Telerek chiamato Kendo. La griglia può utilizzare un pulsante per sincronizzare le modifiche con il db all'interno della griglia. Anche se la griglia richiede una licenza professionale, puoi provarla gratuitamente e vedere se ti piace lo stile e seguire gli esempi e crearne uno personalizzato.

Fondamentalmente, i dati sono mostrati in una tabella HTML, se l'utente fa clic sulla cella entra in una modalità di modifica per modificare i valori direttamente nella cella. Se non vogliono salvare la modifica o semplicemente chiudere il browser, il valore era solo nel browser client ed è stato eliminato. Facoltativamente, le modifiche possono essere sincronizzate in tempo reale mentre l'utente si sposta tra i campi. Spetta a te come funziona l'interfaccia. I dati vengono effettivamente memorizzati in un array intelligente nel browser come un piccolo database in cui la griglia sta semplicemente visualizzando l'array (MVC, Pattern View Controller pattern pattern). Fare clic su Salva invia semplicemente le celle sporche al database tramite ajax.

Guarda: link

Anche se non utilizzi i loro strumenti, il metodo è un'ottima demo su come gestire l'interfaccia utente per le modifiche alle tabelle.

    
risposta data 29.05.2015 - 02:02
fonte
0

Non ho familiarità con le tecnologie particolari che stai utilizzando, ma forse posso offrire qualche consiglio.

Se ho capito bene, hai due interfacce utente identiche (viste) con due comportamenti diversi . Questo mi dice che hai solo bisogno di avere una vista, ma due controller. Quando l'utente fa clic su "nuovo", la vista viene mostrata con un controller "Crea" che indica come comportarsi. Quando l'utente fa clic su "modifica", viene mostrata la stessa vista con un controller "Modifica" che si comporta in modo leggermente diverso.

Ciò ti evita di codificare due diverse interfacce utente. Devi solo mantenere la logica che determina come si comportano.

Raccomando di consultare il modello Model-View-Controller per ulteriori informazioni.

    
risposta data 30.05.2015 - 21:49
fonte

Leggi altre domande sui tag