2016-07-19 8 views
1

現在、私が使用しているURLマッピングに統合されているパラメータを変更する方法を検討しようとしています。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" 
    } 

パラメータ$タイトルはかなりのデータベースから引き出され、次の形式で送信されますされたデータセット、ある[これはタイトルです]。したがって、文字列の前後に大括弧があり、単語は空白で区切られています。

g:linkでネストされたパラメータを持つリンクを作成すると、データベースから引き出されるときにURLに挿入されます。私が試みているのは、URLエンコードされた "%20"の代わりにハイフンで区切られた出版物の特定のタイトルを示すSEO-URLを作成することです。

今まで、私はこのように見ている動的URLを生成することができた:それは静的である必要があり、ユーザーが開くためのリンクをコピーすることができるはずですけれども

http://localhost:8080/projectname/show/%5BAllgemeine%20Bevölkerungs[...]/782/...PARAMS... 

はさらに私はすでに、jQueryのを通してそれを実装しましたページ自体を - ページを読み込んでいるときにクライアント側のURLを変更することはできません。

replaceAll( ''、 ' - ')のような関数を定義する方法はありますか?空白をハイフンとf.eで置き換えるためにマッピングのパラメータに呼び出すことができます。空の文字を含む角括弧? それは、私がドキュメンテーションを通して知ることができなかったものです。

ご協力いただきありがとうございます。

答えて

0

正規表現を含む関数でサービスを作成し、関数に渡す文字列に最初に変換したmy:g:linkのパラメータtitleにこの関数を実行することで、私の問題を解決することができました。 ConversionService

public static String convert(String title){ 
     title = title.replaceAll("\\s", "-").replaceAll("[^0-9a-zA-Z\\-]", ""); 
     return title; 
} 

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

と機能

関連する問題