1

継承した Spring Web アプリケーションがあり、現在拡張中です。私は、Spring XML ファイルの大規模で無秩序な展開とリファクタリング プロセスの地獄を経験してきました。時間は二度と戻りません。現在、注釈を使用して新しい Controller コードを書き始めています。

注釈として定義された RequestMappings を持つコントローラーがあり、コードの他の場所で戻り値として参照できるように、URL をコントローラーの最終静的として配置しました。しかし、JSP を構築しようとすると、すべてが壁にぶつかるようです。

これを行うための受け入れられた「最善の」方法はありますか?(または何らかの方法で?)

説明する....

public class MyController {
    /**
     * Magic string that defines the base URL for this action
     */
    public static final String BASE_URL = "/do_my_smart_action.do";
    /**
     * Magic string defining parameter name
     */
    public static final String PARAM_ID = "id";

...

    @RequestMapping(value = BASE_URL, method = RequestMethod.GET)
    public ModelAndView beginSmartAction(
        @RequestParam(required = false, value = PARAM_ID) Long id,
        ModelMap model) {

        // Do clever stuff

        return new ModelAndView(TARGET_JSP_NAME, model);
    }

}

jspでURLを次のように記述できるようにしたいと思います...

<a href="<${BASE_URL}?${PARAM_ID}=${object.id}">Do Smart Action</a>

コード内の BASE_URL の定義を変更すると、JSP 内のリンクが「正常に機能する」ようになります。

記録のために、私は現在、Spring 3.0.6、Java 1.5、およびグラスフィッシュ 3.1.2 を使用しています。前者は比較的簡単にぶつけることができます。Java 1.7に移行しようとすると、コードで奇妙なことが起こるように見えるので、それがより大きな問題になる可能性があります。

どんなアドバイスもありがたく受け取られます。

4

1 に答える 1

1

メソッドにアノテーションを付けて@ModelAttribute("baseUrl")、単純に戻りBASE_URL、jsp で としてアクセスできるようにすることができます${baseUrl}。ただし、これは、このコントローラーを介してレンダリングされるページに対してのみ機能します。他のコントローラーは が異なり${baseUrl}、混乱を招きます。

私はあなたが実際にそれを必要としないと思います。URL を jsp にハードコーディングすることはそれほど問題ではありません。リファクタリングがそれほど簡単ではないだけです (ただし、検索して置換するだけなので、かなり簡単です)。

これらが本当に必要だと感じた場合は、すべての URL 定数を 1 つのクラス (インターセプター) に抽出しHandlerInterceptor、モデルにそれらすべてを入力することができます。例えば

public class ControllerUriPopulatingInterceptor implements HandlerInterceptor  {
   public void postHandle(
            HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView model)
            throws Exception {
    model.addAttribute("usersBaseUrl", USERS_BASE_URL);
    model.addAttribute("articlesBaseUrl", ARTICLES_BASE_URL);
    ....

   }

   ...
}

このクラスには、ある時点で何百もの定数が含まれることがわかります。長所と短所を計算して、これが必要かどうかを判断してください。

于 2013-05-21T05:12:22.873 に答える