#java #spring
#java #spring
Вопрос:
Привет всем, я хочу сохранить список объектов в объекте сеанса. Для хранения 1 объекта у меня есть этот код:
@Controller
@SessionAttributes("temp")
@RequestMapping(value = "/test")
public class TestController {
@ModelAttribute("temp")
public Temp setObj() {
return new Temp();
}
@RequestMapping(method = RequestMethod.GET)
public String test(Model model) {
model.addAttribute("temp", new Temp());
return "testInput";
}
@RequestMapping()
public String add(@ModelAttribute("temp") Temp temp, Model model) {
model.addAttribute("temp", temp);
return "test";
}
@RequestMapping(value = "/get") // or "/getList" to ensure it works
public String kek(@ModelAttribute("temp") Temp temp, Model model) {
model.addAttribute("temp", temp);
return "test";
}
}
Где
class Temp implements Serializible {
//constructor fields, methods
}
PS сохранение 1 объекта работает нормально.
Но как я могу сохранить List<Temp>
в объекте сеанса и добавить дополнительный Temp
объект с помощью контроллера? Или, может быть, я должен использовать что-то вроде:
class TempList {
private List<Temp> list
//constructor, get/set addToList methods
}
Если да, как я могу инициализировать этот класс и использовать tempListObj.addToList(Temp temp)
метод?
Комментарии:
1. Что значит «инициализировать этот класс»?
Ответ №1:
Для вашей информации, если ваш объект store в сеансе с аннотацией @sessionAttributes, этот объект будет доступен только в области действия этого контроллера. Если вы хотите сохранить список в сеансе, вы можете просто определить @sessionAttributes({«temp»}) на уровне класса и установить это в сеанс в любом методе контроллера, подобном этому:
model.addAttribute("temp", new ArrayList<Temp>());
Затем вы можете получить доступ к этому таким образом:
public String someMethod(@ModelAttribute("temp") List<Temp> temp) {...}
Комментарии:
1.
@RequestMapping(method = RequestMethod.GET) public String test(Model model) { model.addAttribute("tempObj", new Temp()); model.addAttribute("list", new ArrayList<Temp>()); return "testInput"; } @RequestMapping() public String add(@ModelAttribute("temp") List<Temp> list, @ModelAttribute("tempObj") Temp temp, Model model) { list.add(temp); model.addAttribute("list", list); return "test"; }
2. Я добавил такой код, но у меня есть
Expected session attribute 'temp'
, но я добавилmodel.addAttribute("temp", new ArrayList<Temp>())
3. Я рад, что это помогло вам.