如何在Spring Controller中传递JSP c:set变量

时间:2014-09-08 10:46:32

标签: spring jsp spring-mvc controller

我在jsp页面中声明了一个简单的变量

 <html>
   <body>
     <c:set var="vehicle" scope="request" value="Car" />
     <td><a href="<%=request.getContextPath()%>/productsHome/vehicles">Cars</a></td>
   </body>
 </html>

我试图访问变量的车辆,其值为&#34; Car&#34;在我的Spring控制器中

  @RequestMapping(value = "/vehicles", method = RequestMethod.GET)
  public ModelAndView viewLaptops(@RequestParam(value = "vehicle", required = false) String    vehicleType) {

      if (vehicleType.equals("Car")) {
            // retrieve car list, return the model for car list
      }
      else if (vehicleType.equals("Truck")) {
            // retrieve truck list, return the model for truck list
      }
      System.out.println(carType);

  } 

但我得到一个空值。我怎样才能实现这一目标?谢谢你的帮助。

3 个答案:

答案 0 :(得分:0)

尝试按如下方式更新生成的网址:

<c:set var="vehiculeURL">  
  <c:url value="productsHome/vehicles">    
    <c:param name="vehicle" value="Car"/>      
  </c:url>    
</set>  
<a href="${vehiculeURL}">Car</a> 

答案 1 :(得分:0)

要从spring控制器将值传递给.jsp,可以使用Model参数来运行:

@RequestMapping(value = "/vehicles", method = RequestMethod.GET)
public String viewLaptops(Model model, ...) {
    model.addAttribute("Car", "Toyota");
    return "index.jsp"; //path to your file
}

通过使用以下语法,您将在jsp中使用键“Car”获得值“Toyota”:

<div>${Car}</div>

答案 2 :(得分:0)

我设法解决了我想要发生的一切,使用@PathVariable,我能够在单个控制器中映射多个url请求,假设我有3个href

<td><a href="<%=request.getContextPath()%>/productsHome/vehicles/Car">Cars</a></td>
<td><a href="<%=request.getContextPath()%>/productsHome/vehicles/Truck">Trucks</a></td>
<td><a href="<%=request.getContextPath()%>/productsHome/vehicles/Bike">Bike</a></td>

我在我的控制器类中添加了另一个 handler-method ,它将支持我使用 / vehicle

的默认映射
@RequestMapping(value = "/vehicles", method = RequestMethod.GET)
public ModelAndView viewVehicles() {

    ModelAndView mv = new ModelAndView();
    mv.setViewName("vehiclesPage");

    return mv;
}

@RequestMapping(value = "/vechicles/{type}", method = RequestMethod.GET)
public ModelAndView viewDifferentVehicles(@PathVariable("type") String type) {

    ModelAndView mv = new ModelAndView();

    if(type.equals("Car") {
        mv.setViewName("cars"); // cars.jsp
    }
    else if (type.equals("Truck") {
        mv.setViewName("trucks"); // trucks.jsp
    }
    else if (type.equals("Bike") {
        mv.setViewName("bikes");  //bikes.jsp
    }

    return mv;
}

这正是我想要发生的事情,映射不同的请求并在单个处理程序方法中返回所需的视图,我认为访问带有一些if-else结构的JSP变量将解决我的问题,只是一些随机的运气我偶然发现的 @PathVariable