grails - URL映射-替换从数据库中提取的参数中的字符

标签 grails grails-3.0.9 urlmappings.groovy

我目前正在尝试找出如何修改集成到我正在使用的URL映射中的参数。

static mappings = 
{

"/$controller/$action?/$id?/(.$format)?"
{
        constraints {
            // apply constraints here
        }

}


name test1: "/.../$title/..."{
        controller = "study"
        action = "st_show"
    }

name test2: "/.../$title/..."{
        controller = "search"
        action = "se_show"
    }

参数$ title几乎是一个数据集,该数据集是从数据库中提取的,将以以下格式传输:[这是一个标题]。因此,字符串前后都有方括号,单词之间用空格分隔。

如果我现在通过嵌套嵌套参数的g:link创建链接,则将其从数据库中提取时放入URL中。我正在尝试创建SEO-URL,它将显示连字符分隔的出版物的某个标题,而不是用URL编码的“%20”。

到目前为止,我能够生成如下所示的动态网址:
http://localhost:8080/projectname/show/%5BAllgemeine%20Bevölkerungs[...]/782/...PARAMS...

此外,我已经通过JQuery实现了它,尽管它应该是静态的,并且用户应该能够复制链接以自己打开页面-当在加载页面时更改url客户端时,这是不可能的。

有没有一种方法可以定义带有replaceAll。('','-')之类的函数,可以将其调用到映射中的参数上,以用连字符和f替换空格。带空字符的方括号?
那几乎是我无法通过文档获得的。

预先感谢您的帮助!

最佳答案

我设法通过创建一个包含正则表达式的函数的服务并在g:link的参数标题上执行此函数来解决我的问题,我首先将其转换为字符串,然后将该字符串传递给该函数。

<g:link controller="study" action="st_show" params="[data: data, ... title: ConversionService.convert(fieldValue(bean: path).toString(), ... data: data)]"></g:link>

以及ConversionService中的函数
public static String convert(String title){
        title = title.replaceAll("\\s", "-").replaceAll("[^0-9a-zA-Z\\-]", "");
        return title;
}

关于grails - URL映射-替换从数据库中提取的参数中的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38456435/

相关文章:

grails - Grails远程字段-paramName和params一起

grails - Geb在Grails应用中发现错误的&lt;title&gt;标签

grails - 在Grails 3中未创建表

forms - 网址映射和表单-它们如何工作?

grails - Grails URL Api映射调用错误的 Controller

grails - Grails Spring Security如何自定义(或添加)其他身份验证规则

grails - Grails Url编码非拉丁字符,例如åäö

grails - 在 Grails 3.0.9 中向 src/groovy 注入(inject)服务

grails - 耐火 Material 处理不当