Domanda

Devo convalidare questo semplice elenco di selezione:

<select name="<%= key %>">
    <option value="ETC" SELECTED>Select an option...</option>
    <option value="ONE">Lorem ipsum</option>
    <option value="TWO">dolor sit amet</option>
</select>

Quindi l'utente non invierà mai il modulo con il, scusa la ripetizione, " Seleziona un'opzione ... " opzione selezionata. In linea di principio, sono autorizzato a utilizzare JavaScript, ma sarebbe interessante imparare a risolverlo anche in JSP.

È stato utile?

Soluzione

Non puoi mai veramente soddisfare la condizione 'non inviare mai un dato valore' perché non hai il controllo sul lato client. L'utente può sempre manipolare l'HTML per inviare ciò che desidera.

È un buon approccio utilizzare JavaScript per eseguire la convalida lato client e fornire all'utente un feedback rapido e rilevare il 99% + dei casi, quindi eseguire una convalida lato server dei parametri inviati per catturare la minoranza che non hai abilitato JS o chi manipola il codice HTML per inviare valori non previsti.

Ricorda solo che la convalida sul lato client è facoltativa ed è utile per la convalida dell'input di "errori comuni", ma la convalida sul lato server è obbligatoria per tutti gli input indipendentemente dal fatto che siano stati eseguiti o meno controlli sul lato client dato input.

Altri suggerimenti

Oggigiorno di solito non si convalida nei JSP, poiché visualizzano solo tutto ciò che è stato elaborato in precedenza. Quindi l'unica convalida che fai " in jsps " di solito è Javascript. Per il resto (la vera convalida) secondo ciò che Pete ha risposto: devi farlo sul lato server in qualunque tecnica tu stia usando lì. Quando viene visualizzato di nuovo nel JSP, si spera che la convalida sia stata eseguita a lungo.

Come ho detto "al giorno d'oggi": quando JSP era un nuovo brillante concetto, si faceva molto di più all'interno dei confini di un JSP e talvolta persino i moduli venivano inviati a JSP. Come convalidare era ancora più non standard in quel momento.

JSP è una "vista" nel modello MVC e pertanto deve essere utilizzato solo per presentare i dati all'utente. Qualsiasi logica dell'applicazione, inclusa la logica di convalida, deve essere eseguita sul lato server. Se questo JSP è destinato a far parte di un'app di grandi dimensioni, consiglierei di utilizzare Spring MVC per configurare l'app e scrivere un validatore per convalidare l'input. Ma anche se non stiamo parlando di un'applicazione di grandi dimensioni qui, la convalida dovrebbe comunque essere eseguita sul lato server, come altri hanno già notato.

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