修改列为ModelAttribute
的SessionAttribute
时,为什么不保留其新值?
每次我对以下示例进行请求时,它都会打印出“初始值。”,这是第一个请求的正确值。但是在第一个请求之后,其值应为“新值”。
为什么ModelAttribute
存储其值?
我有一个基础课。所有servlet扩展了这一点:
@SessionAttributes(value = {"test_string", "something"})
public abstract class Base<T>
{
public abstract T request(
@ModelAttribute("test_string") String _test_string,
ModelAndView _mv);
@ModelAttribute("test_string")
private String getTest()
{
return "Initial value.";
}
}
我有一个特定的servlet:
@Controller
public class InterfaceController extends Base<String>
{
@PostMapping(value = "/interface")
@ResponseBody
@Override
public String request(
@ModelAttribute("test_string") String _test_string,
ModelAndView _mv)
{
System.out.println(_test_string);
_test_string = "new value";
return "whatever content";
}
}
最佳答案
我不是Spring MVC专家,但是您的问题似乎是在理解Java传递引用和String不变性。我制作了一个图表来帮助您了解问题所在,但是您可能需要研究更多有关该问题的信息。