2012-10-31 50 views
1

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

因此,例如,对于有序列号的产品的意见栏中会如果产品已取代另一个通过给它在意见栏序号注意。就像:“这个产品被SN1234所取代”。我想自动将SN1234转换为链接以显示序列号为SN1234的产品。

什么是去了解这一点的最好方法是什么?在控制器中,在GSP?怎么样 ?

回答

1

只要你想匹配的索引的列,你只需要为这场比赛做了查询,如果找到,修改您的评论包含的URL。控制器或服务对于查找无关紧要(尽管我可能会将其放入服务中)。你会希望确保搜索不是事务性的,所以它会尽可能快。我不会在GSP中做任何这样的事情。

要插入链接,您可以简单地查找和替换。一旦你知道哪些文本你想要变成链接,伪代码如下:

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>" 

可能有更有效的方式来做到这一点,但是这是结束了一个开始的好地方。

+0

如何在链接标签中插入字符串字段? – Flavian

+0

已更新的回答来回复您的问题 – Gregg

+0

Thx!呃......这个链接只是让我们看到了一个字符串。我怎样才能使它成为一个真正的链接? – Flavian

0

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

def beforeInsert() { 
    yourMethod() 
} 

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