springMVC 對引數為null或引數不為null的處理
阿新 • • 發佈:2019-01-24
前臺傳給後臺的引數有時是不固定的,有些引數可能有,有些可能沒有,比如獲取定位的gps,有的使用者有開gps,就有gps引數,有些沒有,就沒有gps引數,因此,我想讓這些引數成為可選的,如果沒有傳入,則可能填充一個預設值。
在springMVC中,有相應的方法處理引數,根據版本的劃分,大致可分為3類:
spring4.1+和jdk1.8以上的執行環境使用Optional,將引數可選化
spring3.0+的執行環境使用defaultValue設定預設值
spring2.5+的執行環境用if判斷是否需要給引數注入預設值
我們以springMVC(版本:4.3.10)自帶的hello world例子說明,如下,controller接收前臺(index.html)傳來的name引數,列印到greeting.html介面上
- index.html
<!DOCTYPE HTML>
<html>
<head>
<title>Getting Started: Serving Web Content</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<p>Get your greeting <a href="/greeting_fourpointone" >spring4.1以上--沒有引數</a></p>
<p>Get your greeting <a href="/greeting_fourpointone?name=wen">spring4.1以上--帶引數</a></p>
<p>Get your greeting <a href="/greeting_threepointzero">spring3.0以上--沒有引數</a></p>
<p>Get your greeting <a href ="/greeting_threepointzero?name=wen">spring3.0以上--帶引數</a></p>
<p>Get your greeting <a href="/greeting_twopointfive">spring2.5以上--沒有引數</a></p>
<p>Get your greeting <a href="/greeting_twopointfive?name=wen">spring2.5以上--帶引數</a></p>
</body>
</html>
- GreetingController .java
package wen.hello;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class GreetingController {
//spring4.1+和jdk1.8以上的執行環境
@RequestMapping("/greeting_fourpointone")
public String greeting_spring_version_fourpointone(@RequestParam("name") Optional<String> name, Model model) {
model.addAttribute("name", name);
return "greeting";
}
//spring3.0+的執行環境
@RequestMapping("/greeting_threepointzero")
public String greeting_spring_version_threepointzero(@RequestParam(value="name", required=false, defaultValue="World") String name, Model model) {
model.addAttribute("name", name);
return "greeting";
}
//spring2.5+的執行環境
@RequestMapping("/greeting_twopointfive")
public String greeting_spring_version_twopointfive(@RequestParam(value = "name", required = false) String name, Model model) {
if (name == null) {
name = "world";
}
model.addAttribute("name", name);
return "greeting";
}
}
- greeting.html
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Getting Started: Serving Web Content</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<p th:text="'Hello, ' + ${name} + '!'" />
</body>
</html>
- 執行