1

コントローラーのリクエスト メソッドの最後で、通常は次のようなことを行います。

modelAndView.setViewName("welcomePage");
return modelAndView;

また

return "welcomePage";

この方法はシンプルで効率的ですが、これらの「魔法の文字列」が間違っていると思うのは私だけですか?

同じ「welcomePage」文字列が同じクラスまたは他のクラスで複数回使用される可能性があるため、「繰り返さない」という原則が破られます。さらに、たまたま「welcomePage.jsp」の名前を変更した場合、プロジェクト内のすべての「welcomePage」をまとめて置き換える必要があります。

頭に浮かぶ最初の解決策は、これらの (おそらく共有された) 文字列を (おそらく集中化された) 定数または列挙型に変換することです。しかし、これが Spring MVC を使用する方法であるかどうかはわかりません。

このような「魔法の糸」についてどう思いますか? Spring MVC では、よりきれいな方法でビューを返すことができますか? そうでない場合、どのソリューションをお勧めしますか?

4

1 に答える 1

1

1) コード内の文字列に対する私の嫌悪感は、EMACS がすべての IDE の頂点である人々から学部生として機械学習で学んだことに基づいていることに気付いたとき、それを乗り越えました。AppConstants.ViewNames.WELCOME_PAGE は「welcomePage」より本当に優れていますか? 意図が明確でわかりやすい。ほとんどの場合、これまでに複数回使用されたすべての文字列は定数であると主張する人を見かけますが、定数名は文字列名に非常に近いため、コードが意味を成しているため、変更しても何も起こりません。とにかく定数名も変更しない限り意味があります。/rantoff 変更には、最新の IDE で 15 秒かかります。

2) ビュー リゾルバーは、/welcomePage.htm を WEB-INF/jsp/welcomePage.jsp (または設定したもの) で自動的にレンダリングできます。URL パスで要求された html ドキュメントと名前が一致しない JSP をレンダリングする場合を除き、ビューを名前で具体的に指定する理由はありません。

3) 上記の #2 を利用し、明示的なビュー名を指定する必要がないようにページを構成します。

于 2012-07-04T21:24:16.373 に答える