2011-04-29 28 views
6

esto es de mi controlador ..Java Spring MVC GET/POST en la misma JSP

esto es mis view..this JSP es sólo para añadir en el momento ... esto es add.jsp. .so se publica de nuevo a sí mismo

<form method="post" action="/spring/krams/edit/add"> 
Linna nimi 
<input type="text" name="name"> 
<input type="submit" value="Test" name="submit" /> 
</form> 

Me gustaría que el cambio de archivos JSP, por lo que cuando lo pongo a este archivo, entonces se dice ... "City Agregado". ¿es eso posible?

¿QUÉ PASA CON LA ACTUALIZACIÓN DE UNA CIUDAD?

@RequestMapping(value = "/update", method = RequestMethod.POST) 
public String updated(@RequestParam("city") int city_id, 
         @RequestParam("text") String name, 
         Model model) { 
    service.updateCity(name, city_id); 
    return "update"; 
} 

¿Tiene causa?

+0

¿Qué quiere decir cambio de archivo JSP? ¿Simplemente desea mostrar un mensaje de texto "ciudad agregada" en add.jsp? – CoolBeans

+0

@CoolBeans: sí, después de haber presionado el botón y se agregó a la base de datos, quiero que se muestre City Added – Jaanus

Respuesta

11

En el método de enviar Puede añadir un atributo con el método addAttribute

@RequestMapping(value = "/add", method = RequestMethod.POST) 
public String added(@RequestParam("name") String name, Model model) { 
    City city = new City(); 
    city.setCity(name); 
    service.addCity(city); 
    model.addAttribute("city", city); 
    return "add"; 
} 

y en el JSP se puede comprobar si la ciudad atributo es nulo o no (con la etiqueta <c:if/>). En caso de que no sea nulo, es porque acaba de agregarse al modelo, por lo que puede mostrar lo que desee. ${city.city} es sólo una expresión JSTL que tiene acceso al atributo de la ciudad y luego llamar al captador para acceder a la propiedad de la ciudad de ese atributo:

<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %> 

<c:if test="${city != null}"> 
    CITY <c:out value="${city.city}" /> ADDED 
</c:if> 

ACTUALIZACIÓN

Si necesita mensajes diferentes dependiendo de actualización/crear operaciones que puede hacer esto: (En el ejemplo de una actualización se realiza cuando el parámetro ID no es nulo porque el id es el identificador de la ciudad para actualizar)

@RequestMapping(value = "/add", method = RequestMethod.POST) 
public String added(@RequestParam(value="id", required=false) String id, @RequestParam("name") String name, Model model) { 
    City city; 
    String operation; 
    if(id== null){ 
     //create operation 
     city = new City(); 
     operation = "CREATE"; 

    }else{ 
     //update operation 
     city = service.findCity(id); 
     operation = "UPDATE"; 
    } 
    city.setCity(name);   
    service.saveCity(city); //save or update 
    model.addAttribute("city", city); 
    model.addAttribute("operation", operation); //add operation param 
    return "add"; 
} 

y yo n el JSP que puede hacer:

<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %> 

<c:if test="${operation == 'CREATE'}"> 
    <c:if test="${city != null}"> 
      CITY <c:out value="${city.city}" /> ADDED 
    </c:if> 
    <c:if test="${operation == 'UPDATE'}"> 
      CITY <c:out value="${city.city}" /> UPDATED 
    </c:if> 
</c:if> 
+0

gracias, funcionó ... ¿y si quiero decir ACTUALIZADO? ... mira mi controlador en la publicación principal – Jaanus

+0

@ Jaanus Puedes decir lo que quieras. Si hay casos diferentes (crear, actualizar ...) necesitará una forma de ver en el jsp qué operación es la que está sucediendo. Puede agregar otro atributo en el controlador, por ejemplo operación llamada y en la etiqueta c: if hacer algo como test = "$ {operation == 'UPDATE'}" – Javi

+0

puede agregar que exmaple a su publicación, cómo agregar otro attirbute al controlador? – Jaanus

Cuestiones relacionadas