1

我的域中有一个“评论”字符串字段。在每次保存或更新该字段时,我想检查该字段是否包含与来自同一域(或不同域)的另一个字段的字符串匹配的子字符串。我需要遍历该字段的所有实例以查看是否存在匹配项。如果匹配,我想将其转换为注释字段内的链接,以显示与子字符串匹配的条目的显示操作。

因此,例如,带有序列号的产品的注释字段会通过在注释字段中给出其序列号来记录该产品是否已被另一个产品替换。如:“此产品已被 SN1234 取代”。我想自动将SN1234转换成一个链接来显示序列号为SN1234的产品。

解决此问题的最佳方法是什么?在控制器中,在 GSP 中?如何 ?

4

2 回答 2

1

只要您尝试匹配的列已编入索引,您只需查询匹配项,如果找到,请修改您的评论以包含 URL。控制器或服务对于查找并不重要(尽管我可能会将它放在服务中)。您需要确保搜索不是事务性的,因此它会尽可能快。我绝不会在普惠制中做任何这样的事情。

要插入链接,您可以进行简单的查找和替换。一旦您知道要将哪个文本转换为链接,伪代码如下:

def comment = "This product was replaced by SN1234" 
def match = "SN1234"
def link = g.link(action: "show", controller: "product", id: "${product.id}", match)
comment = comment.replace(match, link)

然后你会得到什么

"This product was replaced by <a href='/product/1234'>SN1234</a>"

可能有更有效的方法来做到这一点,但这是一个很好的起点。

于 2012-10-31T14:57:16.657 回答
0

您可以使用GORM 事件在您的域中执行此操作。因此,每当插入/更新域时,您都可以检查您的字段是否已更改。然后你可以插入你的链接。

def beforeInsert() {
    yourMethod()
}

def beforeUpdate() {
    if (isDirty('yourField')) {
        yourMethod()
    }
}
于 2012-10-31T14:57:09.770 回答