2012-08-03 76 views
0

我有兩個Spring MVC的行動,在這個例子中需要從表單一個參數提交時:Spring MVC的傳入的參數@RequestParam字符串requestedURL

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

我想知道如果屬性requestedURL可以指聲明的變量實際上保存傳入的屬性輸入名稱= 「requestURL」 的名稱...

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

僞代碼:

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

通知的@ReadFrom

這是爲了避免冗餘。現在它被稱爲requestedURL,但將來有人可能想要更改輸入參數名稱,在我看來這不應該是應用程序中的硬編碼字符串。

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

並提交時的方法被讀取。但是在動作方法的傳入參數中屬性名稱必須是硬編碼

謝謝!

回答

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) 
+0

最後工作正常,實際上我的是最後的。如果最終會如何?否則你的建議可能是一個很好的解決方法。謝謝! – momomo 2012-08-03 12:49:08

+0

我只是看着RequestParam類。有一個屬性值=「」...這是什麼?說沒有關於最終.. – momomo 2012-08-03 12:54:04

+0

我已經添加了更新 - 基本上這是從瀏覽器期望的屬性名稱。方法參數本身(requestedURL)在編譯後得到更改(除非調試符號處於打開狀態),所以@RequestParam的value屬性是一種顯示屬性名稱的方法 – 2012-08-03 12:57:56

相關問題