Giriş
Şu satırı dahil ederiz
import org.springframework.web.bind.annotation.SessionAttributes;
Bir sayfadaki ModelAndView'a eklenen attribute nesnelerinin Session içinde saklanmasını sağlar. Böylece diğer sayfalardan da aynı bilgilere erişilebilir.
Kullanım
Örnek
@Controller
@SessionAttributes("readonlySettings")
public class MyController {
@RequestMapping(value = "/firstPage")
public ModelAndView firstPageSubmit(String valuePage1, String valuePage2,
ModelMap map) {
map.addAttribute("readonlySettings",
new ReadonlySettings(valuePage1, valuePage2);
return new ModelAndView("secondPage");
}
@RequestMapping(value = "/secondPage")
public ModelAndView secondPage(ModelMap map, SessionStatus status, String valuePage2) {
ReadonlySettings settings = map.getAttribute("readonlySettings");
doa.save(settings.getValuePage1(), settings.getValuePage2(),valuePage2);
status.setComplete();
}
...
}
Örnek
Şöyle yaparız. Burada session'a bir IDBTable nesnesi yerleştiriliyor. Daha sonra POST işleminde bu nesneye @ModelAttribute anotasyonu ile erişilebilir
@Controller
@SessionAttributes("table")
public class TableController {
@PostMapping({"/table.html")
protected ModelAndView getTable(HttpServletRequest request,
@RequestParam(value = "tableName") String name)
throws Exception {
ModelAndView modelAndView = new ModelAndView("...");
IDbTable table = ...
modelAndView.addObject("table", table);
...
return modelAndView;
}
@PostMapping("/deleteRowData.html")
@ResponseBody
public void delete(@ModelAttribute("table") IDbTable table) {
...
}
}
Örnek
Şöyle yaparız. Burada
@ModelAttribute ile birlikte kullanılıyor ve model yoksa ilk nesne yaratılıyor. Post işleminde yine @ModelAttribute ile todo nesnesi ve liste alınıyor. todo nesnesi form ile geliyor. liste ise @SessionAttribute ile geliyor. Daha sonra view "todos.html" sayfasına yönlendiriliyor. Bu sayfa da yeni model'i döndürüyor.
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import org.springframework.web.servlet.view.RedirectView;
@Controller
@RequestMapping("/sessionattributes")
@SessionAttributes("todos")
public class TodoControllerWithSessionAttributes {
@PostMapping("/form")
public RedirectView create(
@ModelAttribute TodoItem todo,
@ModelAttribute("todos") TodoList todos,
RedirectAttributes attributes) {
...
todos.add(todo);
attributes.addFlashAttribute("todos", todos);
return new RedirectView("/sessionattributes/todos.html");
}
@ModelAttribute("todos")
public TodoList todos() {
return new TodoList();
}
@GetMapping("/todos.html")
public String list(
Model model,
@ModelAttribute("todos") TodoList todos) {
model.addAttribute("todos", todos);
return "sessionattributestodos";
}
}
Örnek
Şöyle
yaparız.
@SessionAttributes("email")
public class HomeController {
...
}