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

标签 java spring spring-mvc data-binding

我扩展

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/

相关文章:

java - Spring mvc 抛出 org.springframework.web.HttpMediaTypeNotAcceptableException : Could not find acceptable representation

java - 如何在java中查询json对象?

java - Swagger Gradle 插件在构建期间未正确生成 spring mvc 的 openapi.json 文件

java - 是否可以使用Java更改不同操作系统的桌面背景?

java - 所需的请求部分 'file' 不存在。尝试上传图像, Angular -> Spring

java - 欧元符号在某些机器上出现乱码

css - 使用 bootstrap 对齐表单字段的结果非常丑陋

java - Spring MVC 与 .html 一起使用

java - 如何使用线程每次进行检查(例如在后台运行)直到我的条件为真

java - JScrollPane 组件更改