我有两个 grails 项目(管理后端和前端)使用来自本地插件的相同域类。
我需要在前端和后端有不同的视图。例如,有一个领域类事件。在每个项目中我都使用 GenerateViews。然后我修改生成的gsps。以 list.gsp 为例。在前端,我删除了从视图和控制器中创建新事件的操作,在后端我保留了它们。这是因为在前端,用户应该只能看到事件列表,而在后端,管理员创建和修改前端显示的内容。这是我得到的结构:
项目域
- 域/grails-app/domain/myapp/Event.groovy
项目前端(grails.plugin.location.'domain' = "../domain")
- 前端/grails-app/controllers/myapp/frontend/EventController.groovy
- 前端/grails-app/views/event/list.gsp(没有编辑/创建操作的链接)
项目后端(grails.plugin.location.'domain' = "../domain")
- 后端/grails-app/controllers/myapp/backend/EventController.groovy
- 后端/grails-app/views/event/list.gsp(编辑/创建的链接...)
但是当我使用 run-app 运行我的前端应用程序并转到列表时,控制器被调用:
def listEvents(Integer max) {
params.max = Math.min(max ?: 10, 100)
[eventInstanceList: Event.list(params), eventInstanceTotal: Event.count()]
}
结果 backend/grails-app/views/event/list.gsp 被渲染,而不是 frontend/grails-app/views/event/list.gsp。
当我生成视图时,混乱已经开始了。因此,当我在后端项目中为 domain/grails-app/domain/myapp/Event.groovy 生成视图时,一切都很好。视图在我的后端项目中创建并按预期工作。
然后我将 ober 移至前端项目并为 domain/grails-app/domain/myapp/Event.groovy 生成视图。这次 grails 会告诉我已经有视图,并询问我是否要替换它们。如果我说是,它不会取代任何东西,而是在我的前端项目中创建视图。真的很奇怪。
我发现有一个与此相关的旧错误报告,我创建了一个新报告(http://jira.grails.org/browse/GRAILS-9920)。
与此同时,我应该怎么做才能解决这个问题?我可以重命名控制器的方法和视图,但我希望有更好的方法。看起来很奇怪,同名视图可能会覆盖单独项目中的视图。还是只有在使用 run-app 时才会发生类似的事情?
我是 Grails 的新手,所以也许我错过了一些明显的东西,但这真的让我害怕,因为看起来我可能会通过修改另一个项目而意外暴露一个项目中的动作。