Hibernate Grails:如何为两个不同的控制器使用相同的域类

Hibernate Grails:如何为两个不同的控制器使用相同的域类,hibernate,grails,groovy,gsp,Hibernate,Grails,Groovy,Gsp,这就是我试图做的 Form1->PCController->PC->数据库 Form2->GPCController->PC->数据库 所有域类都映射到DB 在创建/编辑过程中,Form2被重定向到PCController和后续的显示/编辑页面,因为创建的对象类型为PC,它自动连接到该控制器 <g:link action="show" controller="gPC" resource="${pCInstance}" params="[noheader: params.noheader]"

这就是我试图做的

Form1->PCController->PC->数据库

Form2->GPCController->PC->数据库

所有域类都映射到DB

在创建/编辑过程中,Form2被重定向到PCController和后续的显示/编辑页面,因为创建的对象类型为PC,它自动连接到该控制器

<g:link action="show" controller="gPC" resource="${pCInstance}" params="[noheader: params.noheader]"><g:message code="default.button.show.label" default="Cancel" /></g:link>

我尝试将pCInstance切换到gPCInstance。该控件转到GPCController,但gPCInstance不是对象实例,因此在命中GPCController时返回null


我如何使这个场景有效地工作

这类问题的答案很简单,您有几个选择:

  • 根本不要声明控制器。这将使其在当前操作时执行所需操作

  • 然后,这将在呈现该视图的任何操作中执行显示

  • 有点类似于选项1,但有其他用途:
  • 声明如下:

    
    
    如果actionName==currentAction等等,后者对于确定您在哪里更有用

    无论如何,要小心使用它,但这应该指导您如何解决它,通常这是围绕重复菜单选项等动态模板的方法

    <g:link action="show" controller="${controllerName}" resource="${pCInstance}" params="[noheader: params.noheader]"><g:message code="default.button.show.label" default="Cancel" /></g:link>