2009-03-15 6 views

Répondre

4

Je pense que c'est une préoccupation commune.

Ce n'est pas une solution directe à votre problème, mais c'est ce que je fais et cela fonctionne très bien pour moi.

  1. Je ne fais jamais de modifications directes aux Grails artefacts échafaudés (vues et contrôleurs)

  2. Je garde mes vues sur la production/contrôleurs séparés des objets échafaudés; à travers j'utilise l'échafaudage comme point de départ de mes contrôleurs d'applications et de vues.

  3. S'il y a des changements au modèle de domaine, je recréer les vues et copier-coller (dans la mesure du possible) des artefacts échafaudés aux artefacts codés manuellement. À un certain point, je supprime tous les artefacts échafaudés de l'application ou je protège juste l'accès à ceux-ci.

Espérons que cela aide.

+1

Comment nommez-vous vos vues/contrôleurs personnalisés? Il semble que vous deviez diverger des conventions de nommage des grails pour que cela fonctionne. C'est un problème commun et une bonne solution serait géniale. –

+0

La dénomination des vues et des contrôleurs est effectuée en fonction des exigences de l'application. Par exemple, dans une application récente, il y avait 50 classes de domaine, et l'interface de l'application comportait 5 menus principaux (accueil, contacts, calendrier, etc.). Ainsi, mes contrôleurs étaient HomeController, ContactsController et ainsi de suite. –

0

déclare simplement:

class MyDomain { 
    String newField; 
} 

devrait être tout ce que vous devez faire.

+0

Cela écrasera la vue existante qui n'est pas ce qu'ils veulent. – Jared

1

Il y a plusieurs façons de le faire.

  1. Si vous ne l'avez pas modifié trop vos vues générées et que vous utilisez le contrôle de version, vous pouvez permettre Grails d'écraser vos points de vue, puis fusionner les modifications apportées aux nouveaux modèles avec ce qui est dans le contrôle de version.

  2. Si vous avez modifié vos vues générées, vous pouvez simplement répondre non à l'invite d'écrasement des vues. Si vous ajoutez seulement un nouveau champ, en changeant un nom de champ ou quelque chose de simple, modifiez les modèles d'affichage devrait être assez simple à faire manuellement.

Vous traiterez les modifications possibles des contrôleurs de la même manière.

0

Ne pas régénérer les vues, il suffit de copier et coller un autre champ similaire à celui que vous mettez dans la vue que vous voulez.

Questions connexes