Spring MVC и hibernate: необъявленная переменная в jsp становится нулевой при сохранении

thebe.alfarisi спросил: 03 ноября 2018 в 08:14 в: spring

Я только что создал свое простое веб-приложение, используя Spring и фреймворки. Но я сталкиваюсь с критической проблемой, когда происходит транзакция с моей базой данных. Когда я пытаюсь обновить свой объект, необъявленные переменные становятся нулевыми при сохранении в базе данных.

Я объясню это на примере. Model.java:

public class Model implements Serializable {
   private int id;
   private String firstName;
   private String lastName;
   private String description;   //setter getter
}

ModelDaoImpl.java:
@Repository("modelDao")
public class ModelDaoImpl implements ModelDao {
   @Autowired
   SessionFactory sessionFactory;
   public Model create (Model model) throws Exception {
      this.sessionFactory.getCurrentSession().save(model);
      return model;
   }
   public Model update (Model model) throws Exception {
      this.sessionFactory.getCurrentSession().update(model);
      return model;
   }
   public Model get (Serializable id) throws Exception {
      return (Model) this.sessionFactory.getCurrentSession().get(Model.class, id);
   }}
ModelServiceImpl.java:
@Service("modelService")
public class ModelServiceImpl implements ModelService {
   @Autowired
   modelDao modelDao;
   @Transactional
   public Model create (Model model) throws Exception {
      return modelDao.create(model);
   }
   @Transactional
   public Model update (Model model) throws Exception {
      return modelDao.udpdate(model);
   }
   @Transactional
   public Model get (Serializable id) throws Exception {
      return modelDao.get(id);
   }
} ModelController.java:
@Controller
public class ModelController {
   @Autowired
   ModelService modelService
   @RequestMapping(value="/editModel", method.RequestMethod.GET)
   public String formCreator(ModelMap model, HttpServletRequest request) {
      Integer id = new Integer(request.getParameter("id"));
      Model modelData = new Model();
      if (id != null) {
         modelData = modelService.get(id);
      }
      model.addAttribute("modelData", modelData);
      return "editModel"
   }
   @RequestMapping(value="/saveModel", method.RequestMethod.POST)
   public String saveData(@ModelAttribute("modelData") Model modelData) {
      if (modelData.getId() == null) {
         modelService.create(modelData);
      } else {
         modelService.update(modelData);
      }
      return "redirect:/modelList";
   }//SKIP FOR GET MODEL LIST AND GET MODEL DETAIL
}

editModel.jsp:
<form:form action="${pageContext.request.contextPath}/saveModel" method="POST" modelAttribute="modelData">
<table>
   <form:hidden path="id"/>
   <tr>
      <td>First Name:</td> 
      <td><form:input path="firstName"/></td> 
   </tr>
   <tr>
      <td>Last Name:</td>
      <td><form:input path="lastName"/></td> 
   </tr>
   <tr>
      <td colspan="2" align="center"><input type="submit" value="Save"></td>
   </tr>
</table>
</form:form>

Со страницы jsp мы видим, что я не объявлял переменную 'description', но при обновлении моих существующих данных переменная 'description' становится нулевой. Я пытался использовать @DynamicUpdate или относился к процессу динамического обновления, но результат был все тот же, переменная 'description' по-прежнему становилась нулевой.

Есть предложения?

0 ответов