PropertyValue 属性值表,这个表关联了两个外键,一个指向 Product ,另一个指向 Property ,当我按照之前的设计把 listProduct.jsp 设计成下面这个样子的时候,点击【编辑属性】,Property 的信息应该怎么传递?
也就是说,如何处理从 listProduct 跳转到 listPropertyValue 页面时凭空跳出来的 Property 的相关信息?
解决方案:
在 PropertyValueServiceImpl 中增加:
@Autowired PropertyService propertyService;我们现在有 category_id 和 product_id ,我们可以利用 Property 和 Category 之间的联系,通过 category_id 查询出所有对应的 Property ,然后再筛选出同时匹配 property_id 和 product_id 的 PropertyValue:
public List<PropertyValue> list(Integer product_id, Integer category_id) { PropertyValueExample example = new PropertyValueExample(); List<PropertyValue> propertyValues = new ArrayList<PropertyValue>(); List<Property> properties = propertyService.list(category_id); for (Property property : properties) { // 筛选出同时匹配 property_id 和 product_id 的值 example.or().andProperti_idEqualTo(property.getId()).andProduct_idEqualTo(product_id); propertyValues.addAll(propertyValueMapper.selectByExample(example)); } return propertyValues; }emmm...这样的思路出来之后,对应的 Controller 就清晰了:
@RequestMapping("/listPropertyValue") public String list(Model model, Integer product_id, Integer category_id) { List<PropertyValue> propertyValues = propertyValueService.list(product_id, category_id); model.addAttribute("propertyValues", propertyValues); Product product = productService.get(product_id); model.addAttribute("product", product); return "admin/listPropertyValue"; }