// 疑似 Spring MVC Controller
@GetMapping("/detail")
public String detail(@RequestParam Long id) {
Entity e = service.getById(id); // 若 id 不存在,可能回傳 null
model.addAttribute("entity", e); // 後續視圖存取 e.field 拋 NPE
return "view";
}
service.getById(id) 找不到資料回傳 null。${entity.field} 渲染時拋 NullPointerException,導致 500 錯誤頁面。
@GetMapping("/detail")
public String detail(@RequestParam Long id, Model model, RedirectAttributes ra) {
Entity e = service.getById(id);
if (e == null) {
ra.addFlashAttribute("error", "資料不存在");
return "redirect:/list";
}
model.addAttribute("entity", e);
return "detail";
}
@Valid, BindingResult)。Optional<T> 或拋出自訂異常 EntityNotFoundException。@ControllerAdvice 統一回傳 404 頁面或 JSON 錯誤。${entity?.field} (Thymeleaf) / #if($entity)$entity.field#end (Velocity)。「如果娶不到id你的方法就會報錯,建議判斷取id是否為空」