我想显示包含所有产品及其折扣的页面。 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'}被评估为字符串。
任何人都知道如何做到这一点?
答案 0 :(得分:0)
您可以使用
${requestScope['product'+product.id+'_applicableDiscounts']}
但我发现它很难看。
为什么不将折扣添加到ProductDTO呢?或者创建一个包含ProductDTO实例及其适用折扣的新类作为bean属性?
答案 1 :(得分:0)
我认为你可以使用spring的eval标签
<spring:eval expression="product${product.id}_applicableDiscounts" var="discounts"/>
然后你可以使用“折扣”变量。