Gostaria de armazenar uma lista em uma sessão para poder acessá-la e adicionar / remover / excluir objetos em um controlador separado mediante solicitação. Atualmente, tenho um controlador que está criando uma lista e enviando-a para um JSON, que estou acessando de uma página jsp usando AngularJS.
Tentei usar @SessionAttributes
adicionando a lista a um modelo, mas a lista não foi armazenada corretamente. Eu sou bastante novo no SpringMVC, então qualquer sugestão / conselho sobre onde procurar seria bem-vinda.
Meu controlador criando minha lista:
@RestController
@SessionAttributes({"URLparam", "usersList"})
public class ReportController {
@RequestMapping(value="/events")
public List<Appliance> getEvents(@ModelAttribute("URLparam")String userInput, ModelMap model){
List<Appliance> events = new ArrayList<>();
events = ProcessChoice.ofList(userInput);
model.addAttribute("usersList", events);
System.out.println(userInput);
return events;
}
}
Meu controlador que desejo editar a lista existente:
@Controller
@SessionAttributes("usersList")
public class EditListController {
@RequestMapping(value="/testing", method=RequestMethod.GET)
public String makeChanges(@RequestAttribute("usersList") List<Appliance> usersList) {
//make changes to list here
for(Appliance p: usersList) {
System.out.println(p.getName());
}
return "testing";
}
}
Da forma como está, o código apresenta: error 400 - Missing request attribute 'usersList' of type List
Posso ver que há uma opção para adicionar uma coleção <> ao modelo, mas não tenho certeza de como armazená-la, pois não me permite dar um nome.
Em seu ReportController você está armazenando a lista ("eventos") para o modelo sob a chave "usersList". O modelo atua como dados que podem ser renderizados na visualização. Dessa forma, ele não é armazenado na Sessão.
Considere algo como: session.setAttribute ("usersList", eventos); no ReportController e o correspondente session.getAttribute ("usersList") no EditListController.
Você também pode omitir a anotação @ SessionAttributes se fizer isso desta forma. Se quiser usar essas anotações, familiarize-se com seu escopo (onde colocá-las e onde usá-las) e uso aqui: http://vmustafayev4en.blogspot.de/2012/10/power-of-springs-modelattribute- and.html e api doc oficial aqui: http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/bind/annotation/SessionAttributes.html e
No entanto, armazenar dados na sessão pode parecer uma boa ideia, mas geralmente é a razão para o grande consumo de memória do aplicativo se houver muitas sessões ativas - só para você saber.
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras