1

現在、使用している 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 は、データベースから取得され、次の形式で送信されるデータセットです [ this is a title ]。そのため、文字列の前後に角括弧があり、単語は空白で区切られています。

パラメータがネストされた状態で g:link を介してリンクを作成している場合、データベースから取得されるときに URL に挿入されます。私が試みているのは、SEO-URL を作成することです。これは、URL エンコードされた「%20」ではなく、ハイフンで区切られた出版物の特定のタイトルを表示します。

これまでは、次のような動的 URL を生成できました。

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

さらに、静的である必要があり、ユーザーがリンクをコピーしてページを開くことができる必要がありますが、JQuery を介して既に実装しています。ページの読み込み中にクライアント側で URL を変更する場合は不可能です。

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

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

4

1 に答える 1

0

正規表現を含む関数を使用してサービスを作成し、この関数を 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;
}
于 2016-07-20T09:08:12.360 に答える