gpt4 book ai didi

java - 分派(dispatch)到 View 时,如何停止使用 Spring 处理程序中的命令对象隐式丰富模型?

转载 作者:行者123 更新时间:2023-11-30 05:03:54 24 4
gpt4 key购买 nike

如果你看handler return types ,这一切都表明,模型在到达 View 之前通过 commandObject 进行了丰富。

如何阻止它?我只想返回在处理程序中设置以进入 View 的数据,而不是传递给处理程序的 commandObject。

    Map map = new HashMap();
map.put("sucess", "sucess");
return new ModelAndView("ajaxResponse", map);

这是因为Spring的AnnotationMethodHandlerAdapter处理,它对每个返回类型进行了合并。

if (returnValue instanceof ModelAndView) {
ModelAndView mav = (ModelAndView) returnValue;
mav.getModelMap().mergeAttributes(implicitModel);
return mav;
}
else if (returnValue instanceof Model) {
return new ModelAndView().addAllObjects(implicitModel).addAllObjects(((Model) returnValue).asMap());
}
else if (returnValue instanceof View) {
return new ModelAndView(returnValue).addAllObjects(implicitModel);
}
else if (handlerMethod.isAnnotationPresent(ModelAttribute.class)) {
addReturnValueAsModelAttribute(handlerMethod, handlerType, returnValue, implicitModel);
return new ModelAndView().addAllObjects(implicitModel);
}
else if (returnValue instanceof Map) {
return new ModelAndView().addAllObjects(implicitModel).addAllObjects((Map) returnValue);
}
else if (returnValue instanceof String) {
return new ModelAndView((String) returnValue).addAllObjects(implicitModel);
}

最佳答案

从评论来看,您似乎正在渲染 JSON 作为响应。使用 Jackson(Spring 用于 JSON 处理的默认选项之一)时,您可以指定“RenderedAttributes”,这样模型的所有字段都不会放入响应 JSON 中,而只会放入您明确指定的字段。

“默认情况下,模型映射的全部内容(框架特定的类除外)将被编码为 JSON。对于需要过滤映射内容的情况,用户可以指定一组特定的通过 RenderedAttributes 属性进行编码的模型属性。” (来自 reference guide, section 16.10

关于java - 分派(dispatch)到 View 时,如何停止使用 Spring 处理程序中的命令对象隐式丰富模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5744133/

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