Как сохранить значение атрибута модели в JSP? - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть страница jsp с именем product.jsp.На странице загрузки JSP, мне нужно заполнить многие выпадающий список и другие.Но он отправляет форму, независимо от того, успешен он или нет, он очищает все текстовые поля.Я хочу сохранить значение, пока я не очистлю.Вот процесс, который я использовал. Когда я отправляю его перенаправить на ту же страницу, но значение атрибута модели становится пустым.Я хочу сохранить значение атрибута модели

  1. JSP-страницу

    <form:form method="POST" action="/productSetup/add" modelAttribute="productForm">
      <spring:bind path="name">
          <input type="text" class="form-control" id="name" name="name"   value="${productForm.name}" />              
    </spring:bind>
    
  2. Вот контроллер ..

     @Controller
     @RequestMapping("/productSetup")
     public class ProductController {
    
      @RequestMapping(value = "", method = RequestMethod.GET)
       public ModelAndView index(Model model) {
    
        ModelAndView modelAndView = new ModelAndView("product");    
        model.addAttribute("getCategoryList", dao.getCategoryList());        
        model.addAttribute("productForm", new ProductModel());
    
        return modelAndView;
      }
    
     @RequestMapping(value = "/add", method = RequestMethod.POST)
     public ModelAndView usrReg(@ModelAttribute("productForm") ProductModel productModel, Errors error, Model model,
    HttpSession session,RedirectAttributes redir,BindingResult result) {        
    
       ModelAndView modelAndView = new ModelAndView("product");
    
       redir.addFlashAttribute("productForm", productModel); 
    
       return new ModelAndView("redirect:/productSetup");
    
      }
    
    }
    

    Пожалуйстапомоги мне

1 Ответ

0 голосов
/ 24 сентября 2018

Вы публикуете свою форму и перенаправляете ее на получение.Проблема в том, что вы всегда создаете новый атрибут модели:

model.addAttribute("productForm", new ProductModel());

. Вы должны проверить, содержит ли RedirectAttributes «productForm», и добавить его.

Object productForm = redirectAttributes.getFlashAttributes().get("productForm");
if(productForm == null){
     productForm = new ProductModel();
}
model.addAttribute("productForm", productForm);

Это будет работать только напри первом перенаправлении второй доступ не будет содержать атрибут.Если вы хотите сохранить данные между последовательными запросами на получение, вы должны сохранить их в сеансе.В вашем методе записи вы можете заменить

redir.addFlashAttribute("productForm", productModel); 

на:

session.setAttribute("productForm", productModel);

и в вашем запросе на получение

Object productForm = session.getAttribute("productForm");
if(productForm == null || !(productForm instanceOf ProductModel)){
     productForm = new ProductModel();
}
model.addAttribute("productForm", productForm);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...