1. 程式人生 > >springMVC 對引數為null或引數不為null的處理

springMVC 對引數為null或引數不為null的處理

前臺傳給後臺的引數有時是不固定的,有些引數可能有,有些可能沒有,比如獲取定位的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>
  • 執行

這裡寫圖片描述