2013-12-16 389 views
0

我正在寫非常簡單的Spring MVC應用程序(剛開始學習)。它只有一個jsp頁面。運行這個應用程序後(使用Tomcat的Im,沒什麼大不了),它必須顯示帶有Hello的頁面,並且如果我向url發送一些參數(例如someURL /?name = mike),它必須是帶有你好邁克的頁面如何從網址獲取參數

這裏是代碼

@Controller 
@RequestMapping("/") 
public class HelloController { 
    @RequestMapping(method = RequestMethod.GET) 
    public String printWelcome(@RequestParam("name") String param, ModelMap model) { 
     if (param == null || param.isEmpty()) 
      model.addAttribute("message", "Hello"); 

     model.addAttribute("message", "Hello " + param); 
     return "hello"; 
    } 
} 

和hello.jsp中:

<html> 
<body> 
    <h1>${message}</h1> 
</body> 
</html> 

的問題是,如果我有沒有在URL參數,你好頁心不是所示,而不是它的錯誤

+0

你得到了什麼錯誤? –

+0

你可以發佈'stacktrace'嗎? – Deepak

回答

1

@RequestParam註釋具有required屬性,您可以將其設置爲false(默認爲true)。

public String printWelcome(@RequestParam(value = "name", required = false) String param, ModelMap model) { 

只有在這種情況下,將春天給你一個null參數傳遞給@RequestParam註釋參數。

+0

非常感謝!!!!!!! 1 – JohnDoe

+0

@John不客氣。考慮提供有用的答案,並接受其中一個你認爲最有幫助的答案。 –

0

您可以設置defaultValue參數@RequestParam。用作回退的默認值。提供默認值隱式設置required() to false

(@RequestParam(value = "name", defaultValue = "new value")String description) 
0

你需要改變你的方法名,包括required = false name參數,否則默認需要,你的方法簽名更改爲以下:

public String printWelcome(@RequestParam(value = "name", required = false) String param, ModelMap model) 

從Spring文檔:

默認情況下需要使用此註釋的參數,但您可以通過設置@ RequestParam的來指定參數是可選的必填屬性爲false(例如@RequestParam(value =「id」, required = false))。 http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html