Perché devo convalidare gli attributi nella pagina JSF?

0

Voglio conoscere la migliore pratica, per convalidare gli attributi sul progetto jsf. Conosco due forme di convalida:

Opzione 1: convalida sulla pagina JSF

Convalida pagina JSF:

<h:inputText value="#{userBean.textEg}" maxlength="15" />

Attributo Bean:

private String textEg; // ++getAndSetter

Dove definito da param in input my maxLength.

Opzione 2: convalida su bean

Attributo della pagina JSF:

<h:inputText value="#{userBean.textEg}" />

Convalida dei bean:

@Max(15)
private String textEg; // ++getAndSetter

Entrambe le opzioni funzionano bene, ma la mia domanda è quando usare l'opzione 1 e quando usare l'opzione 2, se applicabile.

    
posta AndreiDeholte 10.07.2015 - 21:52
fonte

2 risposte

0

Se la tecnologia ti consente di convalidare in più livelli, quindi qualcuno con una inclinazione alla sicurezza potrebbe obiettare: "perché non entrambi?".

Per semplificare, suggerisco l'opzione 2. Il motivo per cui l'opzione 2 consente di testare l'applicazione e il test dell'unità sarà vincolato dalle restrizioni dell'applicazione effettivamente distribuita. L'opzione 1 è improbabile che sia UTed e quindi suggerirei di limitarti al minimo codice o logica possibile.

    
risposta data 13.07.2015 - 20:14
fonte
0

Direi:

"Validate in every place you can do so."

Prima convalidi, prima fornisci un feedback all'utente del sistema. Ciò riduce eventuali errori, offre una formazione pratica e migliora l'esperienza dell'utente.

Devi convalidare la tua logica aziendale, perché ci sono molte regole aziendali che non lo rendono alla tua interfaccia utente. La ragione più importante è che il tuo back-end non può permettersi di fidarti del tuo front end, soprattutto sul web.

Devi convalidare nel tuo repository perché l'interfaccia utente non è l'unico posto in cui puoi apportare modifiche ai tuoi dati.

Specialmente con questa strategia in atto, è molto importante che i dati vengano trattati in modo coerente, anche se non vengono trattati in modo coerente. Il classico problema di questo dilemma è un semplice campo di input dell'area di testo. Può essere non più di 43 byte, per esempio, perché è quello che è definita la dimensione del campo del database.

Tuttavia, l'area di testo in un browser Web può accettare caratteri non ASCII, come accenti e glifi. Quindi, la stringa che arriva nella tua applicazione può adattarsi alla dimensione massima dell'area di testo, ma, quando viene convertita in UTF-8 per l'inserimento nel tuo database, la sua dimensione potrebbe essere leggermente più grande.

Il feedback per l'utente che immette i dati deve avere senso, anche quando non lo fanno (giustamente) per comprendere i dettagli delle codifiche dei caratteri o dei limiti dei campi del database.

    
risposta data 14.07.2015 - 02:20
fonte

Leggi altre domande sui tag