Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 春季DataBinder中setAllowedFields和setDisallowedFields方法的影响_Java_Spring_Spring Mvc - Fatal编程技术网

Java 春季DataBinder中setAllowedFields和setDisallowedFields方法的影响

Java 春季DataBinder中setAllowedFields和setDisallowedFields方法的影响,java,spring,spring-mvc,Java,Spring,Spring Mvc,我的问题很简单。如果我执行一个setAllowFields(),Spring是否会自动禁止其他操作 同样的问题,如果我使用setDisallowFields(),是否允许其他字段 我想没有,但是,有人有过这样的经历吗 看一下JavaDoc: “注册应允许绑定的字段。默认值为“所有字段”。例如,对其进行限制以避免不必要的修改。” 绑定HTTP请求参数时存在恶意用户。“ 这意味着默认情况下允许所有字段。如果不希望允许所有字段,则可以在此方法中指定允许的字段 与此类似,对于: “注册不允许绑定的字段。

我的问题很简单。如果我执行一个
setAllowFields()
,Spring是否会自动禁止其他操作

同样的问题,如果我使用
setDisallowFields()
,是否允许其他字段


我想没有,但是,有人有过这样的经历吗

看一下JavaDoc:

“注册应允许绑定的字段。默认值为“所有字段”。例如,对其进行限制以避免不必要的修改。” 绑定HTTP请求参数时存在恶意用户。“

这意味着默认情况下允许所有字段。如果不希望允许所有字段,则可以在此方法中指定允许的字段

与此类似,对于:

“注册不允许绑定的字段。默认值为无。例如,将字段标记为不允许,以避免不需要的绑定。” 绑定HTTP请求时恶意用户的修改 参数。”

这意味着默认情况下不允许任何字段。如果要禁止某些字段,则可以在此方法中指定不允许的字段


因此,您的问题的答案是
setAllowedFields()
将自动禁止未指定的字段,但是
setDisallowedFields()
将不会自动允许未指定的字段(除非您没有将它们也包括在
setAllowedFields()
中)

为了支持我的回答,让我将Spring的以下实现包括在内:


您可以清楚地看到,如果一个字段存在于
允许的字段中,而不存在于
不允许的字段中,那么它将被允许。否则,它将不被允许。

请查看以下内容的JavaDoc:

“注册应允许绑定的字段。默认值为“所有字段”。例如,对其进行限制以避免不必要的修改。” 绑定HTTP请求参数时存在恶意用户。“

这意味着默认情况下允许所有字段。如果不希望允许所有字段,则可以在此方法中指定允许的字段

与此类似,对于:

“注册不允许绑定的字段。默认值为无。例如,将字段标记为不允许,以避免不需要的绑定。” 绑定HTTP请求时恶意用户的修改 参数。”

这意味着默认情况下不允许任何字段。如果要禁止某些字段,则可以在此方法中指定不允许的字段


因此,您的问题的答案是
setAllowedFields()
将自动禁止未指定的字段,但是
setDisallowedFields()
将不会自动允许未指定的字段(除非您没有将它们也包括在
setAllowedFields()
中)

为了支持我的回答,让我将Spring的以下实现包括在内:


您可以清楚地看到,如果一个字段存在于
允许的字段中,而不存在于
不允许的字段中,那么它将被允许。否则,这是不允许的。

谢谢@mushif ali nawaz。这是我所期望的,但需要一些确认(真的,由于时间不够,我没有阅读spring的源代码实现)@SPoint不客气。如果您感到困惑,应该始终阅读JavaDoc和实现。它也帮了我很多!谢谢@mushif ali nawaz。这是我所期望的,但需要一些确认(真的,由于时间不够,我没有阅读spring的源代码实现)@SPoint不客气。如果您感到困惑,应该始终阅读JavaDoc和实现。它也帮了我很多!
protected boolean isAllowed(String field) {
    String[] allowed = getAllowedFields();
    String[] disallowed = getDisallowedFields();
    return ((ObjectUtils.isEmpty(allowed) || PatternMatchUtils.simpleMatch(allowed, field)) &&
            (ObjectUtils.isEmpty(disallowed) || !PatternMatchUtils.simpleMatch(disallowed, field)));
}