Java Spring StringTrimmerEditor将字段置零,而不是禁用
我正在使用Spring的Java Spring StringTrimmerEditor将字段置零,而不是禁用,java,spring,spring-mvc,model-view-controller,trim,Java,Spring,Spring Mvc,Model View Controller,Trim,我正在使用Spring的registerCustomEditor来修剪所有的前导/尾随空间,但我不希望它在特定字段(例如密码字段)上执行 @ControllerAdvice public class MyCustomControllerAdvice { @InitBinder public void setupDefaultInitBinder(WebDataBinder binder) { binder.setDisallowedFields("*passw
registerCustomEditor
来修剪所有的前导/尾随空间,但我不希望它在特定字段(例如密码字段)上执行
@ControllerAdvice
public class MyCustomControllerAdvice {
@InitBinder
public void setupDefaultInitBinder(WebDataBinder binder) {
binder.setDisallowedFields("*password");
binder.registerCustomEditor(String.class, new StringTrimmerEditor(true));
}
}
现在,当我使用
password=[space][space]MyPassword
发布POST时,控制器将获得null
,而不是您配置的[space][space]MyPasswordpassword
是一个不允许的字段,因此它不会被绑定,因此它总是null
。我明白了。那么我怎样才能实现我的愿望呢?修剪用户在密码字段中键入的任何内容都没有意义,但我确实希望在其他字段(如名称)中修剪,因为空间更多地是用户体验问题。为密码字段注册特定的编辑器,而不是StringTrimmerEditor
。问题是如何排除密码字段的StringTrimmerEditor?我可以在initBinder中为PasswordController添加一个新的,但仍然会添加ControllerAdvice中的,并且我为password字段声明了register one。这将优先于全球注册的。
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.registerCustomEditor(String.class, new StringTrimmerEditor(true));
PropertyEditorSupport dummyEditor = new PropertyEditorSupport() {
@Override
public void setAsText(String text) throws IllegalArgumentException {
super.setValue(text);
}
};
binder.registerCustomEditor(String.class, "password", dummyEditor);
}