Добрый день.
В методе контролера @InitBinder делаю привязку параметров запроса к объекту:
@InitBinder("product")
public void initBinder(WebDataBinder binder, HttpServletRequest request) throws ServletException, IOException
{
if(!request.getRequestURI().contains("/product/saveproduct")) return;
//Product product = new Product();
//binder = new WebDataBinder(product);
int id = Integer.parseInt(request.getParameter("id"));
String name = request.getParameter("name");
BigDecimal price = BigDecimal.valueOf(Double.parseDouble(request.getParameter("price")));
String description = request.getParameter("description");
int ownerId = Integer.parseInt(request.getParameter("owner"));
Catalog owner = repo.getCatalog(ownerId);
List<byte[]> images = new ArrayList<>();
for(Part part : request.getParts())
{
images.add(part.getInputStream().readAllBytes());
}
String str = binder.getTarget().toString() + " " + id + name + " " + price + " " + description + " " + ownerId;
MutablePropertyValues props = new MutablePropertyValues();
props.addPropertyValue("id", id);
props.addPropertyValue("name", name);
props.addPropertyValue("price", price);
props.addPropertyValue("description", description);
props.addPropertyValue("images", Optional.ofNullable(images));
props.addPropertyValue("owner", owner);
binder.bind(props);
}
Класс объекта в Java
public class Product {
private int id;
private String name;
private BigDecimal price;
private String description;
private Optional<List<byte []>>images = Optional.ofNullable(null);
private Optional <Catalog> owner = Optional.ofNullable(null);
//getters and setters
}
Как мне теперь обратиться к этому объекту в параметре метода контролера?
так не работает:
public String saveProduct(Product product)
{
.....
}
с использованием @RequestAttribute("product"), @ModelAttribute("product") тоже.