我有一个带有评级评级属性的产品。我有一个不包含评级字段的产品更新表单(updateStart 方法)(因为我不希望它是可编辑的)。
问题是当我提交表单(使用更新方法)时,评级自动设置为空。所以我尝试在 updateStart 中将 Rating 添加到表单模型中,并在 update 方法中检索它,但它也不断被重写。
我试图在控制器中设置一个 @SessionAttributes("rating") 注释。这次保留了评级值,但 Spring 在数据库中创建了一个新条目,从另一个评级对象克隆,并将其附加到产品。
@Controller
@SessionAttributes("rating")
@RequestMapping("/products")
public class ProductsController {
@RequestMapping("/update_start")
public String updateStart(@RequestParam("id") Long id, Model model) throws BusinessException {
Product product = productService.findProductById(id);
System.out.println("RATING A START "+product.getRating().getAbsoluteRating());
List<Category> categories = productService.findAllCategories();
model.addAttribute("categories", categories);
model.addAttribute("product", product);
model.addAttribute("id", id);
model.addAttribute("rating",product.getRating());
return "products.updateform";
}
@RequestMapping(value="/update", method = RequestMethod.POST)
public String update(@ModelAttribute("rating") Rating rating, @ModelAttribute Product product, BindingResult bindingResult) throws BusinessException {
System.out.println("RATING A UPDATE "+rating.getAbsoluteRating());
validator.validate(product, bindingResult);
List<Image> images = imageService.getProductImages(product.getId());
product.setRating(rating);
productService.updateProduct(product,images,sellerid);
return "redirect:/products/viewsforsellers.do";
}
}
我能做些什么?
编辑:我宁愿避免在我的表单中放置一个带有 ratingId 的隐藏输入字段。