@Resource 正在创建隐藏我自己的控制器的控制器

@Resource is creating controller that shadows my own controller

为了呈现 JSON+HAL,我在我的域中添加了 @Resource 注释:

@Resource(uri = "/rest/book", formats=['hal'])
class Book {
    String title
    String author
}

问题是我已经有了 BookController(没有脚手架)并且通过 gsp 标签创建 ling (<g:createLink controller='book' />) 总是创建 link 到 /rest/book 而不是特定的控制器中的动作(即 /book/index)。当我输入 localhost:8080/book/index 它显示 JSON 响应而不是 gsp 页面时,还有什么值得知道的。

@Resource 以某种方式覆盖了图书控制器,我不知道如何让它们都正常工作。

PS 我正在使用 Grails 2.4.4

为您的控制器使用 namespaces

class BookController {

    static namespace = 'namespaceOne'

    // …
}

然后使用命名空间生成指向您的 BookController 的链接。

<g:link controller="book" namespace="namespaceOne">Click me</g:link>