1

私は次の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]" にリダイレクトされることです。URL からの元の ID ではなく、プレースホルダー {product} が product.toString() に置き換えられているようです。組み込みの 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>

「redirect:/product」+ product.getId() などを実行せずに、正しく機能させて「/products/1」にリダイレクトするにはどうすればよいですか?

4

2 に答える 2