gpt4 book ai didi

java - WebDataBinder#getObjectName() 可以返回 null 吗?

转载 作者:行者123 更新时间:2023-11-30 03:13:45 26 4
gpt4 key购买 nike

我扩展

public class RenamingProcessor extends ServletModelAttributeMethodProcessor {
@Override
protected void bindRequestParameters(WebDataBinder binder, NativeWebRequest nativeWebRequest) {
...
binder.getObjectName();
...
}
}

可以binder.getObjectName()返回 null?

我尝试研究源代码,但在 javadoc 中没有找到此信息?

最佳答案

不,它不能返回 null(在这个声明中我假设 spring 框架没有损坏)。

首先,WebDataBinder 总是有一个值。看着ServletModelAttributeMethodProcessor implementation of bindRequestParameters他们按原样使用 WebDataBinder binder :

ServletRequestDataBinder servletBinder = (ServletRequestDataBinder) binder;
//No null check between cast and usage
servletBinder.bind(servletRequest);

使用哪个构造函数来构建您收到的 WebDataBinder 并不重要。 WebDataBinder 上有 2 个可用:

1.    public WebDataBinder(Object target);
2. public WebDataBinder(Object target, String objectName);

第二个显然会有一个 objectName - 从某种意义上说,我不相信任何在 spring 上工作的理智程序员会用 null 值调用它。

第一个调用 DataBinder constructor它使用 objectName ( public DataBinder(Object target, String objectName)) 调用构造函数,但默认 objectName 除外:

this(target, DEFAULT_OBJECT_NAME);

这是

public static final String DEFAULT_OBJECT_NAME = "target";

objectName 没有 setter 。一旦初始化,它将保持一个值。

旁注:如果绑定(bind)器仅用于转换普通参数值,则目标属性 (getTarget()) 可以具有 null 值。不确定这个应用程序。

<小时/> 更新: This answer清理完毕 my question on How is Spring's DataBinder used to convert a plain parameter value .

关于java - WebDataBinder#getObjectName() 可以返回 null 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33101031/

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