Domanda

Ho ereditato questa gigantesca app Web Java legacy usando Struts 1.2.4. Ho una domanda specifica su ActionForms. Alcuni di essi hanno solo proprietà String (anche per i numeri), altri usano tipi apparentemente appropriati (Integer, Date, String, ecc.). Qual è la migliore pratica qui?

Inoltre, sembra che se una proprietà è di tipo Intero e il valore immesso dall'utente non è un valore intero, Struts lo ingoia in silenzio e non imposta la proprietà. Che succede con questo?

È stato utile?

Soluzione

Per Struts 1.2x, le proprietà in cui l'utente inserisce o seleziona i valori nel modulo HTML e che vengono popolate automaticamente sull'istanza ActionForm dai tag Struts HTML devono essere String o Boolean. Tuttavia, non vi è alcun motivo per cui ActionForm non possa disporre di metodi getter che restituiscono le proprietà come tipi più significativi per l'applicazione, ad es. Data.

Altri suggerimenti

Se vuoi fare un po 'di validazione da solo (o usare le funzionalità di validazione degli struts che sono state rifattorizzate dagli strut dopo 1.2) avrai bisogno delle proprietà String esattamente per il motivo che citi: Una volta che memorizzi i valori numerici in Intero o valori int, devono essere numeri o "niente" " - altrimenti: come hai archiviato "molto" (letteralmente) in una proprietà Integer?

La convalida lato client (ad es. in Javascript) funzionerebbe ancora, ma non si desidera fare affidamento su questo.

Se, dopo aver inserito un numero non valido, si sta accettando che all'utente venga presentato un campo vuoto, è possibile memorizzare i valori in Date-, Integer-, qualunque-Proprietà. Se desideri presentare il valore originale con il messaggio di errore, avrai bisogno della proprietà String.

Questo ha il prezzo necessario per eseguire la conversione manualmente. Poiché Struts 1.2 è piuttosto vecchio, potresti voler pensare di sostituire gradualmente la tua infrastruttura applicativa con una tecnologia più moderna e operare su due tecnologie (la vecchia e la nuova) allo stesso tempo per un po 'finché la parte vecchia non diventa abbastanza piccola (o non abbastanza importante) da eliminare.

nb: hai anche un maggiore controllo su quali valori vuoi accettare come numeri. Ricordo ancora una vecchia applicazione Struts creditcard-banking in cui ho chiesto al mio manager quale sarebbe il risultato atteso quando desideri prelevare 3e2 Euro dalla tua carta. Non hanno detto 300 (come convertito Struts) ma hanno optato per un errore.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top