gpt4 book ai didi

java - Spring mvc 反序列化抽象类

转载 作者:行者123 更新时间:2023-12-01 12:25:29 24 4
gpt4 key购买 nike

假设我有一个抽象类 A,该类位于我的 MainClass 内部,然后我有该类 B 和 C 的实现。使用 ModelAndAttribute 我在某些场景中使用 B 渲染 MainClass,在其他场景中使用 C 渲染 MainClass执行。两者在 Controller 中具有相同的提交方法,因此当我以形式请求此 ModelAndAttribute 时,我正在等待具有 B 或 C 实现的 MainClass,就像之前渲染的那样,但 Spring 始终认为是 A “NullValueInNestedPathException,无效”属性,嵌套属性值为 null”。

知道 Spring 是否有一种机制来确定哪个实现类正在接收?

我读过这篇文章http://www.cowtowncoder.com/blog/archives/2010/03/entry_372.html看起来很有希望,但我无法交互,或者我不想与 Jackson 交互如何序列化实体。

问候。

最佳答案

Spring 不会决定实例化哪个实现。您必须添加一些代码来决定需要启动 2 个类中的哪一个

我们有类似的需求我们在请求参数中传递类型 ClassB 或 ClassC

我们有方法

@ModelAttribute (value = "mainClass")
public void populateObjectBasedOnRequestParameter (
ModelMap modelMap, HttpServletRequest request)

此方法基本上读取请求参数并使用类 A 的正确实现实例化 mainClass

对于表单提交

 @RequestMapping (value = "/{workItemId}", method = RequestMethod.POST, params = "save", consumes =   MediaType.ALL_VALUE)
public String commit(
@ModelAttribute ("mainClass")MainClass mainClass,
BindingResult result, Principal principal,
HttpServletRequest request, final ModelMap model) {

当使用请求参数提交表单时

populateObjectBasedOnRequestParameter() 执行此方法,以便在执行 commit() 方法时模型映射具有 A 类的启动实现

关于java - Spring mvc 反序列化抽象类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26377276/

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