2010-03-25 3 views
0

J'ai créé une application Grails (1.2.1) Outils SpringSource Suite 2.3.2 et voici mon UrlMappings.groovy:comportement UrlMappings étrange pour Grails 1.2.1

class UrlMappings { 
    static mappings = { 
     "/$controller/$action?/$id?"{ 
     constraints { 
    // apply constraints here 
    } 
    } 

     "/broadcasters/setInterval" { //cause a 404 
      controller = "broadcaster" 
      action = "setRefreshInterval" 
     } 

     "/broadcasters/online/$id?" { //this one is OK 
     controller = "broadcaster" 
     action = "listOnlineBroadcasters" 
     } 
     "/broadcasters/$id?" { //this one is OK 
     controller = "broadcaster" 
     action = "listAllBroadcasters" 
     } 
     "/" (controller: "login", action:"auth") 
     "/logout" (controller: "logout") 
    "500"(view:'/error') 
    "404"(view:'/404') 
} 
} 

Voici mon contrôleur

package xxx.yyy.controllers 

import org.codehaus.groovy.grails.plugins.springsecurity.Secured 

@Secured(['ROLE_ADMIN']) 
class BroadcasterController { 

def broadcasterService 
static defaultAction = "listAllBroadcasters" 

    def listOnlineBroadcasters = { 
     ... 
    } 

    def listAllBroadcasters = { 
     ... 
    } 

def setRefreshInterval = { 
    ... 
} 
} 

Quand j'accéder à l'URL /diffuseurs/setInterval, j'ai une 404 fois comme demande normale ou ajax. J'écris également un test unitaire simple pour vérifier mes UrlMappings:

class GSMUrlMappingTests extends GrailsUrlMappingsTestCase { 
    void testUrlMapping() { 
     assertUrlMapping ("/broadcasters/setInterval", controller: "broadcaster", action: "setRefreshInterval") 
    } 
} 

Et le test a échoué! Est-ce un bug de Grails 1.2.1 ou ai-je oublié quelque chose? Voici les plugins que je l'ai utilisé

plugins.acegi=0.5.2 
plugins.debug=1.0.2 
plugins.hibernate=1.2.1 
plugins.jdbc-pool=0.1 
plugins.tomcat=1.2.1 
+0

Généralement, à la fin d'une action du contrôleur, vous redirigez ou affichez quelque chose. Si vous n'avez pas défini quelque chose d'explicite à rendre, il pourrait essayer de rendre la vue par défaut (/broadcasters/setInterval.gsp). Puisque vous avez masqué votre action de contrôleur setRefreshInterval, il est difficile de savoir quel est le problème. Voir le document de référence à http://www.grails.org/doc/latest/guide/single.html#6.1.3%20Models%20and%20Views –

Répondre

0

class UrlMappings { static mappings = { "/$controller/$action?/$id?"{ constraints { // apply constraints here } }

est fermé. Les autres mappages doivent être compris entre