我使用本地插件中的相同域类有两个grails项目(admin后端和前端)。
我需要在前端和后端有不同的视图。例如。有一个域类事件。在每个项目中,我都使用GenerateViews。然后我修改生成的gsps。以list.gsp为例。在前端,我删除了从视图和控制器创建新事件的操作,在后端我保留它们。这是因为在前端,用户应该只能看到事件列表,而在后端,管理员创建并修改前端显示的内容。这是我得到的结构:
项目域
项目前端(grails.plugin.location.'domain'=“../ domain”)
项目后端(grails.plugin.location.'domain'=“../ domain”)
但是当我使用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的新手,所以也许我错过了一些明显的东西,但这真的让我感到害怕,因为看起来我可能会通过修改另一个来意外地暴露一个项目中的动作。