2012-07-04 27 views
1

在控制器請求方法結束時,我們通常是這樣的:Spring MVC和「神奇字符串」返回類型

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

return "welcomePage"; 

儘管這種方法是簡單而有效的,我是唯一一個找到這些「魔術弦」的人嗎?

同一個「welcomePage」字符串可以在同一個類或其他類中多次使用,從而打破了「不要重複自己」的原則。此外,如果我碰巧重命名爲「welcomePage.jsp」,我將不得不全部替換項目中所有「welcomePage」的出現。想到的第一個解決方案是將這些(可能共享的)字符串轉換爲(可能是集中的)常量或枚舉。但我不確定這是如何使用Spring MVC。

你對這種「魔法弦」有什麼看法? Spring MVC是否允許以更簡潔的方式返回視圖?如果不是,你會推薦什麼解決方案?

+1

這些字符串與所有其他字符串沒有區別。如果你在幾個地方使用它們,使它們成爲常量。 –

回答

1

1)當我意識到自己對代碼中的字符串的厭惡是基於我從死亡記憶中學習的東西,而EMACS是所有IDE的巔峯之作。 AppConstants.ViewNames.WELCOME_PAGE是否比「welcomePage」更好?這是明顯的意圖和容易理解。大多數時候,當我看到人們堅持不止一次使用過的每個字符串都是常量時,常量名稱與字符串名稱非常接近,以便代碼有意義,如果您確實更改了該字符串,則不會生成任何字符串除非你改變常數名稱。/rantoff在現代IDE中更改它需要15秒。

2)視圖解析器可以使用WEB-INF/jsp/welcomePage.jsp(或任何你設置的)自動呈現/welcomePage.htm。沒有理由通過名稱明確指定一個視圖,除非您想渲染一個名稱與URL路徑中請求的html文檔不匹配的JSP。

3)構建您的頁面,以利用上述#2的優勢,而不需要指定明確的視圖名稱。

相關問題