Spring MVC的+会话属性和多个标签(Spring MVC + Session attribu

2019-09-17 14:48发布

我有一些UI,其中管理员可以更新产品。 在我的dev /测试,我只开了一个窗口,和一切工作,因为它应该。

然后客户端是编辑,他们打开多个标签用于不同的产品,并在节能,这造成了重复字段的问题。

我假定这是一个组合@SessionAttributes@ModelAttribute 。 打开最后一个产品,是一个摆在会话,因此,如果您尝试编辑的第一个标签,你会真正有不正确的产品。

是我的方法如下,使用SessionAttributeModelAttribute不正确的?

我的控制器:

@Controller
@SessionAttributes({ "product" })
public class ProductController {

@RequestMapping(value = "/product/update/{productId}", method = RequestMethod.GET)
public String update(@PathVariable Long productId, Model model) {
    Product product;
    if (productId == null) {
        product = new Product();
    } else {
        product = Product.find(productId);
    }
    model.addAttribute("product", product);
    return "product/update";
}

@RequestMapping(value = "/product/update", method = RequestMethod.POST)
public String update(@ModelAttribute Product product, BindingResult result,
        Model model) {
    if (result.hasErrors()) {
        return "product/update";
    }
    product = product.merge();
    return "redirect:/product/update/" + product.getId();
}

}

Answer 1:

最后我用一个自定义的SessionAttributeStore的基础上,文章由马蒂·琼斯

http://marty-java-dev.blogspot.com/2010/09/spring-3-session-level-model-attributes.html



Answer 2:

在情况下,你只会显示存储在会话对象,也不会允许它被编辑或替换,这种做法是好的。 但是,对于这样的情况下,最好是使用请求范围,而不是会话范围。



文章来源: Spring MVC + Session attributes and multiple tabs