You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Groovy控制器中从另一个Controller获取记录?

解决方案

方法1:跳转时显式传递CaseRecord ID参数

在CaseRecordController对应的show页面中,跳转至BaseLineController的链接里额外携带caseRecordId参数,示例链接代码:

<a href="${createLink(controller: 'baseLine', action: 'show', params: [id: baselineId, caseRecordId: caseRecordInstance.id])}">查看基线</a>

修改BaseLineController的show方法,通过params.caseRecordId获取CaseRecord的ID:

def show() {
    def baselineInstance
    def caseRecordInstance

    if(params.id) baselineInstance = Baseline.findById(Long.parseLong(params.id))

    try {
        def caseRecordId = Long.parseLong(params.caseRecordId)
        caseRecordInstance = CaseRecord.findById(caseRecordId)
    } catch (NumberFormatException e) {
        // 处理参数格式错误的情况
    }
}

方法2:通过Session临时存储CaseRecord ID

在CaseRecordController的show方法中,将获取到的CaseRecord ID存入Session:

def show() {
    def caseRecordInstance

    try {
        def id = Long.parseLong(params.id)
        caseRecordInstance = CaseRecord.findById(id)
        session.caseRecordId = id // 把ID存入Session
    } catch (NumberFormatException e) {
        // 异常处理逻辑
    }
}

在BaseLineController的show方法中,从Session中读取CaseRecord ID:

def show() {
    def baselineInstance
    def caseRecordInstance

    if(params.id) baselineInstance = Baseline.findById(Long.parseLong(params.id))

    try {
        def caseRecordId = session.caseRecordId
        if(caseRecordId) {
            caseRecordInstance = CaseRecord.findById(caseRecordId)
        }
    } catch (Exception e) {
        // 异常处理逻辑
    }
}

方法3:利用模型关联关系(推荐)

如果Baseline和CaseRecord存在关联关系(比如一个CaseRecord对应多个Baseline),可以在Baseline模型类中定义关联:

class Baseline {
    // 其他字段
    static belongsTo = [caseRecord: CaseRecord]
}

之后在BaseLineController的show方法中,直接通过Baseline实例获取关联的CaseRecord:

def show() {
    def baselineInstance
    def caseRecordInstance

    if(params.id) {
        baselineInstance = Baseline.findById(Long.parseLong(params.id))
        if(baselineInstance) {
            caseRecordInstance = baselineInstance.caseRecord // 直接通过关联获取
        }
    }
}

内容的提问来源于stack exchange,提问作者Keith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 18:12:33