我有以下 Spring MVC 3.2.4 方法:
@RequestMapping(value = "/products/{product}", method = RequestMethod.POST)
public String update(Product product, @Valid @ModelAttribute("productForm") ProductForm productForm, BindingResult bindingResult, Model model) {
if (bindingResult.hasErrors()) {
return "products/view";
}
mapper.map(productForm, product);
productService.saveProduct(product);
return "redirect:/products/{product}";
}
成功后,它应该将用户重定向回产品的详细信息。问题是我没有重定向到页面“/products/1”,而是重定向到页面“/products/Product [code=1234567890, name=Nejaky]”。看起来占位符 {product} 被替换为 product.toString() 而不是来自 URL 的原始 ID。我正在使用内置的 Spring Data 转换器:
<mvc:annotation-driven conversion-service="conversionService">
<mvc:argument-resolvers>
<bean class="org.springframework.data.web.PageableHandlerMethodArgumentResolver" />
</mvc:argument-resolvers>
</mvc:annotation-driven>
<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean" />
<bean class="org.springframework.data.repository.support.DomainClassConverter">
<constructor-arg ref="conversionService" />
</bean>
我应该怎么做才能使其正常工作并将我重定向回“/products/1”而不执行“redirect:/product”+product.getId() 之类的操作?