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

时间:2015-10-13 11:04:47

标签: 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中找到这些信息?

1 个答案:

答案 0 :(得分:2)

不,它不能返回null(在这个语句中我假设spring框架没有被破坏)。

首先,WebDataBinder将始终具有值。查看他们使用WebDataBinder binder的{​​{3}}:

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

使用哪个构造函数构建您收到的WebDataBinder并不重要。 ServletModelAttributeMethodProcessor implementation of bindRequestParameters中可用的2个:

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

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

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

this(target, DEFAULT_OBJECT_NAME);

public static final String DEFAULT_OBJECT_NAME = "target";

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

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

<小时/> 更新DataBinder constructor已清除This answer