Dove eseguire datatype.ParseString (MVC)

1

Utilizzando il pattern MVC, asume una semplice situazione in cui si desidera inviare un numero (ad esempio il numero di pagine in un libro) con un controller a un setter.

Ora, il metodo set è simile a questo

public void setPages(int pgs)
{
pages = pgs;
}

e il controller, che recupera le informazioni da una casella di testo in vista, lo riceve come stringa.

Dove dovremmo eseguire la conversione?

Avremmo il controller fare

int pgs = Integer.parseInt(String textFromView);
someClass.setPages(pgs);

O sarebbe meglio avere un setter che accetta l'input di stringa dal controller e fa la conversione stessa?

Se eseguiamo questa conversione nel setter, non implicherebbe che la logica di business entri nel nostro controller?

    
posta Dylan Meeus 16.10.2014 - 02:04
fonte

1 risposta

2

La conversione in int dovrebbe avvenire nel controller.

Il fatto che l'utente inserisca il numero di pagine in un controllo che è stato progettato per l'input di testo generale è una pura preoccupazione per l'interfaccia utente e che non dovrebbe interessare il modello.

Allo stesso modo, se il valore viene ricevuto su un canale di comunicazione basato su testo (come HTTP), la conversione dovrebbe avvenire anche nel Controller.

Tutto ciò di cui il Modello dovrebbe preoccuparsi è che ottiene un numero che può usare nei calcoli successivi. Il Modello non dovrebbe preoccuparsi di tutti i modi in cui il numero potrebbe essere comunicato dall'utente al Modello. Questa è la responsabilità della vista e del controller.

    
risposta data 16.10.2014 - 09:29
fonte

Leggi altre domande sui tag