添加全局数据
@ControllerAdvice是一个全局数据处理组件,因此也可以在@ControllerAdvice中配置全局数据,使用@ModelAttribute注解进行配置,代码如下:
Global.java
package com.shrimpking.Config;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ModelAttribute;
import java.util.HashMap;
import java.util.Map;
/**
* Created by IntelliJ IDEA.
*
* @Author : Shrimpking
* @create 2023/6/4 17:08
*/
@ControllerAdvice
public class GlobalConfig
{
/**
* 在全局配置中添加userInfo方法,
* 返回一个map。
* 该方法有一个注解@ModelAttribute,
* 其中的value属性表示这条返回数据的key,
* 而方法的返回值是返回数据的value。
* 此时在任意请求的Controller中,
* 通过方法参数中的Model都可以获取info的数据。
* @return
*/
@ModelAttribute(value = "info")
public Map<String,String> userInfo()
{
HashMap<String,String> map = new HashMap<>();
map.put("userName","用户名");
map.put("sex","性别");
map.put("age","年龄");
map.put("address","地址");
return map;
}
}
HelloController.java
package com.shrimpking.controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
/**
* Created by IntelliJ IDEA.
*
* @Author : Shrimpking
* @create 2023/6/4 17:11
*/
@RestController
public class HelloController
{
@GetMapping("/hello")
@ResponseBody
public String hello(Model model)
{
//model转换为map类型
Map<String,Object> map = model.asMap();
//从map中获取出所有的key
Set<String> key = map.keySet();
//获取到key中的循环器句柄
Iterator<String> iterator = key.iterator();
StringBuilder builder = new StringBuilder();
while (iterator.hasNext())
{
//获取到每一项
String str = iterator.next();
//根据每一项的key,获取value值
Object value = map.get(str);
System.out.println(str + "--" + value);
builder.append(str).append("--").append(value);
}
return builder.toString();
}
}