Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Grails 如果子字符串匹配,则在字符串字段中插入链接_Grails - Fatal编程技术网

Grails 如果子字符串匹配,则在字符串字段中插入链接

Grails 如果子字符串匹配,则在字符串字段中插入链接,grails,Grails,我的域中有一个“comments”字符串字段。在每次保存或更新字段时,我想检查字段是否包含与来自同一域(或不同域)的另一个字段的字符串相匹配的子字符串。我需要遍历该字段的所有实例,以查看是否存在匹配项。如果匹配,我想将其转换为注释字段内的链接,以显示与子字符串匹配的条目的操作 例如,带有序列号的产品的注释字段会通过在注释字段中给出其序列号来说明该产品是否已被另一个产品替换。比如:“这个产品被SN1234取代了”。我想自动将SN1234转换为一个链接,以显示序列号为SN1234的产品 最好的办法是

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

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

最好的办法是什么?在控制器中,在GSP中?如何操作?

您可以在您的域中使用。因此,无论何时插入/更新域,您都可以检查字段是否已更改。然后你可以插入你的链接

def beforeInsert() {
    yourMethod()
}

def beforeUpdate() {
    if (isDirty('yourField')) {
        yourMethod()
    }
}
您可以使用在您的域中执行此操作。因此,无论何时插入/更新域,您都可以检查字段是否已更改。然后你可以插入你的链接

def beforeInsert() {
    yourMethod()
}

def beforeUpdate() {
    if (isDirty('yourField')) {
        yourMethod()
    }
}

只要您试图匹配的列被编入索引,您就只需要查询匹配项,如果找到,修改您的注释以包含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>"
“此产品已被替换为”

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

只要你试图匹配的列被索引,你只需要查询匹配项,如果找到,修改你的注释以包含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>"
“此产品已被替换为”

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

如何将链接标记插入到字符串字段中?谢谢!嗯。。。链接只是在字段中为我们显示了一个字符串。我怎样才能使它成为一个真正的链接?它也不能与标签一起工作。有什么办法可以让这一切顺利吗?可能是其他标签?不需要标签。把它放在沙发上什么的${comment}如何在字符串字段中插入链接标记?Thx!嗯。。。链接只是在字段中为我们显示了一个字符串。我怎样才能使它成为一个真正的链接?它也不能与标签一起工作。有什么办法可以让这一切顺利吗?可能是其他标签?不需要标签。把它放在沙发上什么的${comment}