Spring MVC + JSP:动态对象和el变量表达式

时间:2015-08-31 12:49:23

标签: java spring jsp spring-mvc

我想显示包含所有产品及其折扣的页面。 productService为我提供了所有产品,返回DTO(没有折扣或包含任何链接) discountService为我带来了每个产品的折扣,并使用动态名称将它们添加到modelAndView。

@RequestMapping("/all")
public ModelAndView getAll(){
    List<ProductDTO> products = productService.findAll();
    ModelAndView modelAndView = new ModelAndView("products/all", "products", products);
    for(ProductDTO productDTO : products){
        List<DiscountDTO> discountDTOs = discountService.findAllDiscountsForProductApplicableForUser(productDTO.getId(), userService.getCurrentLoggedInUser());
        modelAndView.addObject("product" + productDTO.getId() + "_applicableDiscounts", discountDTOs);
    }
    return modelAndView;
}

我似乎无法找到如何使用EL在JSP页面中访问这些内容 $ {product5_applicableDiscounts}完美无缺,$ {'product'+ product.id +'_ applicableDiscounts'}被评估为字符串。

任何人都知道如何做到这一点?

2 个答案:

答案 0 :(得分:0)

您可以使用

${requestScope['product'+product.id+'_applicableDiscounts']}

但我发现它很难看。

为什么不将折扣添加到ProductDTO呢?或者创建一个包含ProductDTO实例及其适用折扣的新类作为bean属性?

答案 1 :(得分:0)

我认为你可以使用spring的eval标签

<spring:eval expression="product${product.id}_applicableDiscounts" var="discounts"/>

然后你可以使用“折扣”变量。