SpringBoot form submit时后台接受不到值

  • A+
所属分类:SpringBoot

今天项目中发现form submit时后台接受不到值,看了下工程里的代码发现,共通里自定义了一个@BindField注解,加上这个注解后值就能正常接受了,但是印象中Spring是可以自动接受值的,看了下共通的代码,发现它里面把所有用了@BindField注解的字段放到一个list里,然后用setAllowedFields方法设定了允许绑定的字段,而如果list为空,则全部不绑定。

if (allowedList.size() > 0) {
            binder.setAllowedFields(allowedList.toArray(new String[allowedList.size()]));
        } else {
            binder.setAllowedFields("");
        }

而setAllowedFields是个什么方法呢?就WebDataBinder的一个方法,查了API后发现WebDataBinder是继承DataBinder,这个方法实际上是DataBinder里的方法。

而WebDataBinder一般跟@InitBinder一起使用。

以下为spring api中关于setAllowedFields的内容。

public void setAllowedFields(

@Nullable

java.lang.String... allowedFields)

Register fields that should be allowed for binding. Default is all fields. Restrict this for example to avoid unwanted modifications by malicious users when binding HTTP request parameters.
Supports "xxx*", "*xxx" and "*xxx*" patterns. More sophisticated matching can be implemented by overriding the isAllowed method.

Alternatively, specify a list of disallowed fields.


Parameters:

allowedFields - array of field names

 

ZPY

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: