gpt4 book ai didi

spring-mvc - 如何从 Spring 3 MVC 操作返回的 ModelAndView 中省略 ModelAttribute 参数?

转载 作者:行者123 更新时间:2023-12-02 04:04:37 26 4
gpt4 key购买 nike

我有一个 Spring MVC Controller ,其中包含一个使用 AJAX 调用的操作。

@SessionAttributes({"userContext"})
public class Controller
{
...
@RequestMapping(value = "/my-url", method= { RequestMethods.POST })
public ModelAndView doSomething(@ModelAttribute("userContext") UserContext context,
SessionStatus sessionStatus)
{
BusinessObject obj = doSomeBusinessLogic(context.getUserName());
sessionStatus.setComplete();
ModelAndView mav = new ModelAndView("jsonView");
mav.addObject("someInt", obj.getId());
return mav;
}
}

当我运行此操作时,我收到以下异常:
net.sf.json.JSONException: There is a cycle in the hierarchy!
at t.sf.json.util.CycleDetectionStrategy$StrictCycleDetectionStrategy.handleRepeatedReferenceAsObject(CycleDetectionStrategy.java:97)
at net.sf.json.JSONObject._fromBean(JSONObject.java:833)
at net.sf.json.JSONObject.fromObject(JSONObject.java:168)
at org.springframework.web.servlet.view.json.writer.jsonlib.PropertyEditorRegistryValueProcessor.processObjectValue(PropertyEditorRegistryValueProcessor.java:127)
at net.sf.json.JSONObject._fromMap(JSONObject.java:1334)
Truncated. see log file for complete stacktrace

在进行了一些调试之后,我发现 Spring 将 UserContext 对象放在了我返回的 ModelAndView 上。如果我硬编码我的用户名并从方法的参数中删除上下文对象,则操作会成功运行。有没有办法配置 Spring 从返回的 ModelAndView 中省略带有 ModelAttribute 注释的参数?如您所见, sessionStatus.setComplete()没有效果。

最佳答案

我过去曾遇到过类似的问题 @SessionAttributes .通过声明 @SessionAttributes({"userContext"})你告诉 Spring 你想要 "userContext"始终在模型中可用,因此 Spring 别无选择,只能发送您的 UserContext反对模型,以防万一你要重定向或做其他可能会在另一个 Controller 结束的事情.

“解决方案”(我不太喜欢它,但它有效)是省略 @SessionAttributes Controller 上的注释,添加 HttpSession必要方法的参数并“手动”管理其中的内容。

我有兴趣看看是否有更好的方法,因为它似乎 @SessionAttributes具有整理 Controller 级代码的巨大潜力。

关于spring-mvc - 如何从 Spring 3 MVC 操作返回的 ModelAndView 中省略 ModelAttribute 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8346042/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com