3

Spring MVC で「URL 名」を URL にマップする方法があるかどうか疑問に思っています。例えば:

list_users -> /admin/users/list
edit_user?id=123 -> /admin/users/edit/123 (or /users/edit?id=123)
list_programs -> /admin/programs/list

私はPHPのバックグラウンド(特にSymfony)から来ました。各URL /アクションには「ルート名」があり、ビューテンプレートでURLを作成できます。Symfony では、テンプレートで次のようにします。

{{ path('user_edit', { 'id' : 123} }}

//output = /admin/users/edit/123 

URL は必ずしも RESTful である必要はありませんが、Spring MVC でこのようなことが実現できるのではないかと考えています。

私が考えた可能な解決策:

次のように、プロパティ/メッセージファイルにリストされた URL を保持します。

url.users.edit=/admin/users/edit/{id}
url.users.list=/admin/users/list

次に、<spring:message code="url.users.list" />またはこのようなものを使用して URL を生成します。これはすでに一般的に受け入れられている解決策ですか? これはおそらく悪い習慣ですか?

私が尋ねている理由は、完全な URL を JSP 全体に分散させるのは悪い習慣のように思えるからです。「/admin」サブディレクトリの下に 25 個の URL があり、それらを別のサブディレクトリ (「/backend」など) に移動したい場合はどうなりますか。

この記事のどこかに重複した投稿がある場合、または見落としている簡単な解決策がある場合はご容赦ください。ただし、特定の回答を見つけるのは難しいトピックです。

ありがとう!

4

1 に答える 1

2

誰かがこの投稿に出くわした場合に備えて、名前を Spring MVC の URL にマッピングするための解決策を見つけました。

https://github.com/resthub/springmvc-router

このソリューションは非常にうまく機能します。特に、すべての URL やルートを中央の場所に保管できる点が気に入っています。この実装では、@RequestMapping注釈が役に立たなくなります。

次の点に注意してください。

Dispatcher サーブレット*が URL パラメータとして使用していることを確認してください。/それだけでは機能せず、URL が正しく生成されないことを理解するのにしばらく時間がかかりました。

<servlet-mapping>
    <servlet-name>spring-dispatcher</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>
于 2013-08-16T12:42:49.973 に答える