如何执行Spring以将空白字符串请求参数转换为null,避免尝试构建对象?

问题描述 投票:0回答:1

有@controller类,其中包含正确配置的@requestmapping(...)方法。

该方法将请求参数输入类型用户的pojo:

@RequestMapping("") @ResponseBody public User edit(User params){...}
用户本身具有POJO类型“ OrganisationMember”的字段:

public class User { protected OrganisationMember organisationMemberExtension; public OrganisationMember getOrganisationMemberExtension(){ return this.organisationMemberExtension; } public void setOrganisationMemberExtension(OrganisationMember organisationMemberExtension){ this.organisationMemberExtension = organisationMemberExtension; } }
当请求有参数时

Oranisationmemberextension =“”,带有错误消息的弹簧失败:

字段中的字段错误在字段中“用户”'angorisationMememberextension':拒绝值[];代码[typemismatch.user.orbanisationmemberextension,typemismatch.ormanisationmberextension,typemismatch.cool.rs.rs.r.rs.data.model.model.org.org.org.organisationmember,typemismatch];参数[org.springframework.context.support.defaultMessagesOugerCeresOlvable:codes [user.organisationmberextension,OrganisationMememberextension];参数[];默认消息[OrganisationMembereXtension]];默认消息[无法将'java.lang.string'类型的属性值转换为必需的类型'cool.rs.mrp.data.model.model.org.org.org.org.organisationmember'for属性'ankyisationMberextension';无法将“ java.lang.string”类型的价值转换为必需的类型'cool.rs.mrp.data.model.org.org.org.org.org.orghisationmember'用于属性'ankyisationMememberextension':未找到匹配的编辑或转换策略

so,如何强制执行Spring甚至不尝试将空白字符串转换为某些对象类型,而是将相应的POJO属性设置为
Null

? 如果通过某些内置转换器实现和配置选项(如果有)完成,将会很棒。使用@initbinder方法的@controller类和自定义编辑器: @InitBinder public void initBinder(WebDataBinder binder) { binder.registerCustomEditor(OrganisationMember.class, new StringToOrganisationMemberConverter()); }

...也是可能的,但不太喜欢。

此外,是否有一些内置的实现在春季,能够为
user.ormanisationmberextensions构建ankisation-ember bean,并用
ormanisationmberextension.id= 0; OrganisationMembereXtension.name =“ Ojdljzd”; ...

请求参数?

首先,您无需发送object=""。 Instead, you should send

object.field
java spring
1个回答
0
投票


If you send the object directly, you will encounter an error, as I have experienced. Please see the screenshot below for reference:

enter image description here

On eliminating the object, you will have null in that object as shown in below picture.

enter image description here

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.