1

我正在使用Grails版本3.1.12。如何禁用某些操作的默認URL映射

我想禁用一些默認的動作的URL映射,以便手動管理它們。例如,給定控制器:

class MyController { 

    myAction() { 
     render('Hello') 
    } 
} 

這個動作映射在默認情況下my/myAction,但是我想禁用此映射和使用自定義一個像這樣的在UrlMappings.groovy定義:

static mappings { 

    "/$controller/$action?/$id?(.$format)?"{ 
     constraints { 
      // apply constraints here 
     } 
    } 

    '/myCustomAction'(controller: 'my', action: 'myAction') 
} 

默認情況下,第一次創建Grails項目時提供了映射,並提供了默認約定,但仍需要其他操作,但我想排除默認映射myAction。我在UrlMappings.groovy使用excludes設置嘗試:

static excludes = ['/my/myAction'] 

然而,端點my/myAction保持響應默認映射。

我該如何達到理想的行爲?

+0

如何是你的控制器映射到'''我/ myAction '''?不應該是'''myController/myAction'''嗎? – dsharew

+0

@DegenSharew Grails中的約定是'controllerName/actionName',其中名稱不包含類名稱的「Controller」部分。請參閱http://docs.grails.org/3.1.12/guide/single.html#urlmappings – tcrespog

回答

1

路由my/myAction正在由默認的/$controller/$action映射生成。因此,你需要編輯映射的限制部分,以排除你的控制器,這樣的事情應該工作(albiet一些什麼醜):

"/$controller/$action?/$id?(.$format)?"{ 
    constraints { 
     controller(validator: { return it != 'my'}) 
    } 
} 
相關問題