@PostMapping("/upload") // //new annotation since 4.3
public String singleFileUpload(@RequestParam("file") MultipartFile file,
RedirectAttributes redirectAttributes) {
if (file.isEmpty()) {
redirectAttributes.addFlashAttribute("message", "Please select a file to upload");
return "redirect:uploadStatus";
}
try {
// Get the file and save it somewhere
byte[] bytes = file.getBytes();
Path path = Paths.get(UPLOADED_FOLDER + file.getOriginalFilename());
Files.write(path, bytes);
redirectAttributes.addFlashAttribute("message",
"You successfully uploaded '" + file.getOriginalFilename() + "'");
} catch (IOException e) {
e.printStackTrace();
}
return "redirect:/uploadStatus";
}
如何访问上述代码的消息值。
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<body>
<h1>Spring Boot - Upload Status</h1>
<h2>{{message}}</h2>
</body>
</html>
上述代码无法访问消息值。如何在手柄文件中访问。 我想显示消息变量字符串。
答案 0 :(得分:0)
对flash属性没有任何特殊处理。它与具有重定向的模型属性相同。
更改此
<h2>{{message}}</h2>
到
<h2>${message}</h2>
答案 1 :(得分:0)
答案 2 :(得分:0)
您在HTML中的handlebars变量引用实际上是正确的。
如果您的重定向是通过控制器路由的(例如,如果在控制器中定义了updateStatus
的GET方法),那么您可能需要遵循我在回答类似问题时所描述的内容here。基本上,在PRG情况下使用RedirectAttributes
时,您要做的就是:
RedirectAttributes
作为POST方法签名的参数addFlashAttribute
设置所需的属性您没有发布您的updateStatus
GET方法代码,所以我看不到您在做什么,但是如果您正在尝试直接在模型上设置该属性,这将无意中导致flash属性被覆盖。
如果我不得不猜测,我会说问题是您在GET方法签名中缺少@ModelAttribute注释的参数。