Java Spring Webflow属性映射不';当值为null时,不应用默认值或检查类

Java Spring Webflow属性映射不';当值为null时,不应用默认值或检查类,java,spring-webflow,Java,Spring Webflow,关于SpringWebflow2.4.1.1版本 for包含(字符串attributeName,类requiredType)状态: “此映射中是否存在具有提供名称的属性,并且其值是否为指定的必需类型?” 但是,如果键存在但值为null,则认为这是可接受的,并且不会引发IllegalArgumentException 类似地,get的JavaDoc(字符串attributeName,V defaultValue)表示 获取属性值,如果找不到值,则返回默认值 但是,如果键存在但值为null,则不使用

关于SpringWebflow2.4.1.1版本

for包含(字符串attributeName,类requiredType)状态:

“此映射中是否存在具有提供名称的属性,并且其值是否为指定的必需类型?”

但是,如果键存在但值为null,则认为这是可接受的,并且不会引发IllegalArgumentException

类似地,get的JavaDoc(字符串attributeName,V defaultValue)表示

获取属性值,如果找不到值,则返回默认值

但是,如果键存在但值为null,则不使用默认值

这是以前作为一项建议提出的

这可以用eg测试

MutableAttributeMap<Object> flowScope = new LocalAttributeMap<Object>();

flowScope.put("key", null);

assertFalse(flowScope.contains("key", Boolean.class));

assertTrue((boolean) flowScope.get("key", Boolean.TRUE));

assertTrue(flowScope.getBoolean("key", Boolean.TRUE));
实际上,为了安全地访问flowScope属性,允许key not present、null和错误类型,我必须执行以下操作:

try {
        Boolean value = getFlowScope().getBoolean(key);
        return value == null ? false : value;

    }catch(IllegalArgumentException e){
        return false;
    }
对于flowscope属性的类型安全和空安全检索,是否有更干净的替代方法

if(getFlowScope().contains(key, Boolean.class)){
    return getFlowScope().getBoolean(key);
}

return false;
try {
        Boolean value = getFlowScope().getBoolean(key);
        return value == null ? false : value;

    }catch(IllegalArgumentException e){
        return false;
    }