2010-02-24 4 views
2

J'utilise un échafaudage pour un couple de contrôleurs pour deux classes de domaine: 1 Secteur à N Articles:Grails problème référence de lien d'échafaudage

class Item { 

String name 

static belongsTo = [sector:Sector] 

.... 

} 

class Sector { 

String name 

static hasMany = [items:Item] 

.... 

} 

Lorsque I a généré les contrôleurs d'échafaudage correspondants I a utilisé le modèle (classe) mgr: Sectormgr.groovy et Itemmgr.groovy.

Le problème est que certains liens ne sont pas valides dans certaines des vues générées, car il suppose que le I a suivi les noms par défaut pour les contrôleurs. Par exemple:

  • si je vais à/sectormgr/show/20, la liste des éléments qui y sont associés ont le lien/article/show/22, au lieu de/itemmgr/show/22

Y at-il une solution facile pour cela? Est-ce que je manque quelque chose quand je crée les contrôleurs?

Merci à l'avance

Répondre

0

Il y a deux manières de faire face à ce que je crois. Le plus simple est de coller à la convention de Grails de nommer vos contrôleurs SectorController.groovy, ItemController.groovy, etc.

Une autre façon de gérer ce que je pense fonctionnera est de mettre à jour votre Grails-app/conf/UrlMappings.groovy. Voici l'échafaudage par défaut:

class UrlMappings { 
    static mappings = { 
     "/$controller/$action?/$id?"{ 
      constraints { 
       //apply constraints here 
      } 
     } 
     "/"(view:"/index") 
     "500"(view:'/error') 
    } 
} 

Vous voulez quelque chose comme:

class UrlMappings { 
    static mappings = { 
     "/${controller}mgr/$action?/$id?"{ //Add mgr after controller 
      constraints { 
       //apply constraints here 
      } 
     } 
     "/"(view:"/index") 
     "500"(view:'/error') 
    } 
} 
+0

Je suis curieux de savoir si cela fonctionne pour vous. S'il vous plaît, faites-moi savoir! –

0

Modification des URLMappings ne semble pas fonctionner pour moi, et il est un changement beaucoup plus globale. Running intall-templates et en changeant les liens aux contrôleurs dans src/templates/scaffolding/show.gsp était l'approche que j'ai prise.

Vous devrez redémarrer votre serveur après avoir modifié le modèle.