我已經獲得了具有評級分級屬性的產品。我有一個產品更新表單(updateStart方法),它不包含評分字段(因爲我不希望它是可編輯的)。表單在春季提交後的空字段
問題是,當我提交表單(使用更新方法)時,評分自動設置爲空。 所以我試圖將update添加到updateStart中的表單模型中,並在更新方法中檢索它,但它也一直在重寫。
我試圖在控制器中設置@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的隱藏輸入字段。
當您說您將評分添加到表單中時,是添加所有字段還是僅添加了ID?評級是一個實體嗎? –
@KevinBowersox是的,評級是一個實體。我嘗試使用下面的代碼將它添加到模型中(而不是表單輸入):model.addAttribute(「rating」,product.getRating()); –
您表單中的評分是一個下拉菜單? – kiduxa