2012-12-28 9 views
0

Je veux utiliser MVC dans mon nouveau projet avec Swing.MVC Validation des données

Mais j'ai quelques questions.

Dans mon MainView J'ai un formulaire d'entrée et un bouton d'envoi. Lorsque je clique sur soumettre, mon MainController.setUrl(Value) est appelée. Ensuite, je dois vérifier les données. Où dois-je vérifier ces données dans mon MainController? dans mon MainModel? Ou dans mon MainController j'appelle une méthode comme MainModel.isValidUrl(Value)?

Et si les données sont erronées, je veux afficher une boîte de dialogue pour l'utilisateur. Alors, comment puis-je appeler une méthode dans la vue pour afficher cette boîte?

+0

Cela ressemble à un travail pour jQuery. Avez-vous envisagé de l'utiliser dans votre projet? – JOpuckman

+0

J'utilise Java et Swing, pas JavaScript. De plus je ne suis pas vraiment fan de la vérification des données avec JavaScript;) – guillaume

Répondre

1

Vous devez appeler votre MainModel.isValid dans votre MainController, et à partir de là, afficher une boîte de dialogue ou persister le formulaire (selon qu'il est valide ou non). Le MainModel devrait être responsable de sa propre validation. Lorsque vous instanciez votre Controller à partir de votre View, transmettez simplement une instance du View à votre Controller.

Le pseudo-code serait quelque chose comme ceci:

... 
// In your view 
private void initTabPane(){ 
    AbstractModel socialModel = new SocialModel(); 

    // Pass the View 
    AbstractController socialController = new MainController(socialModel, this); 
    ... 
} 


// In your controller 
private AbstractView view; 

public MainController(AbstractModel model, AbstracView view) { 
    ... 
    this.view = view; 
} 

public Validate() { 
    if (!model.isValid) { 
     view.showError(); 
    } 
    else { 
     // do your stuff with the valid model 
    } 
} 
+0

Donc 'MainModel.isValid' n'est pas une fonction booléenne mais un non? Et comment fonctionne la notification avec motif Observateur? Je dois notifier seulement ce qui a changé, ou quand la vue est notifiée, la vue appelle le modèle pour voir ce qui a changé? – guillaume

+0

C'est encore un 'booléen'. Si elle renvoie 'false', vous revenez à votre' View' et vous y définissez une boîte de dialogue d'erreur. Ou vous pouvez appeler une méthode sur le 'View' de votre' Controller', comme 'View.showError (" Le formulaire d'entrée est invalide. Veuillez corriger les erreurs ");'. – rae1

+0

Donc, de cette façon, je dois passer la vue à mon contrôleur et je n'utilise pas le motif Observateur droite? – guillaume