Я объясню.
- У меня есть приложение, в котором есть почтовый ящик, в котором перечислены все сообщения от
текущего пользователя. - Затем у меня есть форма для вставки новых сообщений в базу данных, что оно
и делает все правильно. - После того, как вы отправите эту форму и создадите новое сообщение, контроллер
вернет вас на индексную страницу, где снова перечислены все сообщения.
Но когда вы обновляете страницу, спящий режим делает еще одну вставку в
базу данных, без отправки еще одной формы «нового сообщения», просто делает
еще одну вставку, когда я обновляю индексную страницу...
Я покажу вам функции, которые я использую ниже:
Я использую функцию "enviarMensaje()" в делегате, который он вызывает функции:
enviarMensaje() (чтобы сохранить объект сообщения в базе данных)
и guardarMensajesDestinatario() (чтобы сохранить
несколько объектов получателей в базе данных)
это потому, что у сообщения много получателей, поэтому у меня есть две таблицы для этого.
вот код:
ФУНКЦИЯ ДЕЛЕГИРОВАНИЯ
public String enviarMensaje(String[] mensajesDestinatariosStr, MenMensajes mensaje) {
boolean respuesta=false;
String strRespuesta = "error al enviar el mensaje";
ArrayList destinatariosList=null;
//MenMensajesDestinatarios md=null;
try{
respuesta=mensajesDAO.enviarMensaje(mensaje);
for(String destinatarioStr : mensajesDestinatariosStr){
MenMensajesDestinatarios md=new MenMensajesDestinatarios();
System.out.println(destinatarioStr);
BigDecimal usuarioIdNumber=new BigDecimal(Integer.parseInt(destinatarioStr));
md.setUsuarioId(usuarioIdNumber);
md.setFechaCreacion(mensaje.getFechaCreacion());
md.setModificadoPor(mensaje.getModificadoPor());
md.setCreadoPor(usuarioIdNumber);
md.setMenMensajes(mensaje);
md.setEstado(mensaje.getEstado());
mensajesDAO.guardarMensajesDestinatario(md);
}
if (respuesta) {
strRespuesta = "El mensaje ha sido eviado con exito";
}
}catch(Exception e){
e.printStackTrace();
e.getMessage();
}
return strRespuesta;
}
ФУНКЦИИ DAO
public boolean enviarMensaje(MenMensajes mensaje){
Session session = null;
boolean exito=false;
Transaction trx=null;
try{
session = sessionFactoryHestia.openSession();
trx=session.beginTransaction();
session.saveOrUpdate(mensaje);
trx.commit();
session.flush();
exito=true;
}catch(Exception e){
System.out.println("Error guardando datos");
e.printStackTrace();
trx.rollback();
session.close();
}
return exito;
}
public void guardarMensajesDestinatario(MenMensajesDestinatarios md) {
Session session=null;
Transaction trx=null;
try{
session = sessionFactoryHestia.openSession();
trx=session.beginTransaction();
session.saveOrUpdate(md);
trx.commit();
session.flush();
}catch(Exception e){
e.printStackTrace();
e.getMessage();
}finally{
session.close();
}
}
< /code>
и на случай, если контроллер < /p>
@RequestMapping(value = "enviarMensaje.htm")
public String enviarMensaje(HttpSession session, @Valid @ModelAttribute("menMensaje") MenMensajes mensaje,
BindingResult result, ModelMap modelMap, HttpServletRequest request) {
Integer intOpcion = 1;
AppUsuarios user = (AppUsuarios) session.getAttribute("usuarioVO");//usuario de la sesion
BigDecimal usuarioId = user.getUsuarioId();//guardar el id del usuario de la sesion para pasarlo como parametro
String[] mensajesDestinatarios = request.getParameterValues("destinatarios");
try {
String respuesta = mensajesDelegate.enviarMensaje(mensajesDestinatarios, mensaje);
modelMap.addAttribute("mensajes", mensajesDelegate.listarMensajesTodos(usuarioId, intOpcion));
modelMap.addAttribute("opcion", intOpcion);
modelMap.addAttribute("menMensaje", mensajesDelegate.cargarMensaje(usuarioId, null)); //pasarle un objeto MenMensajes al formulario de nuevo mensaje que esta oculto en un modal.
modelMap.addAttribute("cboUsuarios", mensajesDelegate.cargarUsuarios()); //pasarle la lista de usuarios de la BD para combo de nuevo mensaje
modelMap.addAttribute("cboTiposMensaje", mensajesDelegate.cargarTiposMensaje()); //pasarle la lista de tipos de mensaje de la BD para el combo de nuevo mensaje
} catch (Exception e) {
System.out.println("Error en nuevoMensaje.htm");
}
return "/mensajes/index";
}
Подробнее здесь: https://stackoverflow.com/questions/337 ... out-reason
Мобильная версия