Почему возникает ошибка “Validation failed for object='product'”?

249
05 мая 2018, 17:38

Делаю веб приложение на Java c использованием Spring MVC, Spring Security и Hibernate. Когда хочу добавить продукт меня дает такая ошибка

вот это у меня метод который сохраняет информацию

@RequestMapping(value = "/saveProduct", method = RequestMethod.POST)
public String addProduct(@ModelAttribute("product") Product product,UserDetails userDetails) {
    User user = new User();
    product.setUserUsername(userDetails.getUsername());
    productRepository.save(product);
    return "redirect:/home";
}

а этот метод сделает new и сохраняет в базе

@RequestMapping(value = "/home", method = RequestMethod.GET)
public String home(ModelMap map, @AuthenticationPrincipal UserDetails userDetails) {
    if (userDetails != null) {
        User user = userRepository.findOneByEmail(userDetails.getUsername());
        map.addAttribute("currentUser", user);
    }
    map.addAttribute("addCategory", new Category());
    map.addAttribute("allCategories",categoryRepository.findAll());
    map.addAttribute("addProduct",new Product());
    return "home";
}

а это в JSP от сюда я даю информацию

<spring:form action="saveProduct" modelAttribute="addProduct" method="post" enctype="multipart/form-data">
<spring:select path="category">
    <c:forEach items="${allCategories}" var="category">
        <option>
                ${category.name}
        </option>
    </c:forEach>
</spring:select>
<spring:input path="name"></spring:input>
<input type="file" name="picture">
<spring:input path="description"></spring:input>
<spring:input path="price"></spring:input>
<input type="submit" value="ok">

а это метод который сохраняет картинку

   @RequestMapping(value = "/product/image", method = RequestMethod.GET)
public void getImageAsByteArray(HttpServletResponse response, @RequestParam("fileName") String fileName) throws IOException {
    InputStream in = new FileInputStream("D:\\wasfImage\\" + fileName);
    response.setContentType(MediaType.IMAGE_JPEG_VALUE);
    IOUtils.copy(in, response.getOutputStream());
}

}

что здесь причина за такую ошибку? спасибо за ответ

Answer 1

Вам нужно добавить параметр в метод обработки выгружаемого файла

 @RequestParam("picture") MultipartFile picture
READ ALSO
Как в Drawer (боковое меню) разместить над statusBar?

Как в Drawer (боковое меню) разместить над statusBar?

Подскажите пожалуйста, как Drawer (боковое меню) разместить над statusBar? На фото образец стороннего приложения того, что я хочу получитьЗа основу...

195
Сделаю веб приложения [требует правки]

Сделаю веб приложения [требует правки]

Вопрос такой, есть интернет магазин и когда юзер заходит и добавит продукт за каждую добавлению будет автоматический создаваться новый jsp? Или...

163