Salve a tutti.
Sto realizzando un semplice sistema di gestione dei contatti in rubrica.
Una pagina JSP/JSTL è stata scritta per visualizzare i contatti associati all'utente loggato, i cui dati sono tenuti in un attributo di sessione.
Alla pagina JSP è associata una servlet:
I contatti vengono visualizzati correttamente ed accanto a ciascuno di essi è possibile cliccare su un link che porta ad un'altra pagina JSP in cui il contatto può essere modificato.codice:package it.biagio.servlet; import java.io.IOException; import java.util.List; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import it.biagio.model.Contact; import it.biagio.model.User; import it.biagio.service.UserService; @WebServlet("/showContacts") public class showContacts extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { User user = (User)request.getSession().getAttribute("id"); UserService us = new UserService(); RequestDispatcher requestDispatcher; try { // get list of contacts List<Contact> listOfContacts = us.getContacts(user.getId()); // set session parameter request.getSession().setAttribute("contacts", listOfContacts); // forward requestDispatcher = request.getRequestDispatcher("contacts.jsp"); requestDispatcher.forward(request, response); } catch(Exception e) { requestDispatcher = request.getRequestDispatcher("failure.jsp"); requestDispatcher.forward(request, response); } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }
Anche a quest'altra pagina è associata una servlet:
Quando l'utente conferma le modifiche, queste vengono correttamente salvate sul DB ma, quando la prima servlet viene richiamata, i contatti visualizzati non sono aggiornati.codice:package it.biagio.servlet; import java.io.IOException; import java.util.logging.Logger; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import it.biagio.model.Contact; import it.biagio.model.User; import it.biagio.service.UserService; /** * Servlet implementation class updateContact */ @WebServlet("/updateContact") public class updateContact extends HttpServlet { private static final long serialVersionUID = 1L; private int contactId; private UserService service; private Logger logger = Logger.getLogger(updateContact.class.getName()); protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { contactId = Integer.parseInt(request.getParameter("contactId")); service = new UserService(); try { Contact contact = service.getContact(contactId); request.getSession().setAttribute("contact", contact); } catch(Exception e) { logger.info(e.getMessage()); } request.getRequestDispatcher("updateContact.jsp").forward(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // get info about contact String name = request.getParameter("name"); String surname = request.getParameter("surname"); String telephone = request.getParameter("telephone"); String email = request.getParameter("email"); // prepare a new contact Contact contact = new Contact(); contact.setEmail(email); contact.setName(name); contact.setSurname(surname); contact.setTelephone(telephone); contact.setId(contactId); String result; try { result = service.editContact(contact); } catch(Exception e) { result = e.getMessage(); } logger.info(result); request.getRequestDispatcher("contacts.jsp").forward(request, response); } }
Da cosa può dipendere?
Grazie.

					
					
					
						
  Rispondi quotando
						

