0

この例では、送信時にフォームから 1 つのパラメーターを取得する 2 つの Spring MVC アクションがあります。

public ModelAndView login(HttpServletResponse response, HttpServletRequest request,  
@RequestParam String requestedURL ) 

属性 requestedURL が、入力属性input name="requestURL"の名前を実際に保持する宣言された変数を参照できるかどうかを知りたいです...

class Core {
     static String requestedURL = "requestedURL"; 
}

擬似コード:

public ModelAndView login(..., @RequestParam String @ReadFrom(Core.RequestedURL) ) 

@ReadFrom に注意してください

これは冗長性を避けるためです。現在は requestedURL と呼ばれていますが、将来、誰かが入力パラメーター名を変更する可能性があります。私の意見では、これはアプリケーションでハードコードされた文字列であってはなりません。

<input name="<%= Core.requestedURL %>" value="<%= requestedURL %>" />

送信時にメソッドで読み取られます。しかし、アクション メソッドの着信パラメーターで属性名をハードコードする必要がありますか?

ありがとう!

4

1 に答える 1

1

はい、@RequestParam アノテーションの一部としてハードコードする必要があります。ハードコードするか、static final変数を参照します。

別の方法は、モデル/マップをメソッドの追加パラメーターとして取り込み、そこから属性を取得することです。

public ModelAndView login(HttpServletResponse response, HttpServletRequest request,  
Model model ){
    String requestedURL = model.asMap().get(Core.requestedURL);
} 

更新 この方法で静的最終変数を参照できます。

public abstract class Core {
     public static final String requestedURL = "requestedURL"; 
}

public ModelAndView login(..., @RequestParam(Core.requestedURL) String requestedURL) 
于 2012-08-03T12:47:24.690 に答える