我想自动修剪所有表单字符串字段修剪(仅限尾随和前导空格)
假设我通过FirstName ="robert"预期:"robert"
控制器类具有以下代码:
@InitBinder
public void initBinder ( WebDataBinder binder )
{
StringTrimmerEditor stringtrimmer = new StringTrimmerEditor(true);
binder.registerCustomEditor(String.class, stringtrimmer);
}
@RequestMapping(value = "/createuser", method = RequestMethod.POST)
public Boolean createUser(@RequestBody UserAddUpdateParam userAddUpdateParam) throws Exception {
return userFacade.createUser(userAddUpdateParam);
}
Run Code Online (Sandbox Code Playgroud)
当我调试代码时,它进入@InitBinder而不是修剪bean类字符串字段.
小智 8
要将此功能添加到在 post 中提交并在 RequestBody 中接收的所有 JSON,您可以使用以下 WebMvcConfigurer。
import java.util.List;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
@Configuration
public class HttpMessageConvertor implements WebMvcConfigurer {
@Override
public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(mappingJackson2HttpMessageConverter());
}
@Bean
public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
SimpleModule module = new SimpleModule();
module.addDeserializer(String.class, new StringWithoutSpaceDeserializer(String.class));
mapper.registerModule(module);
converter.setObjectMapper(mapper);
return converter;
}
}
Run Code Online (Sandbox Code Playgroud)
StringWithoutSpaceDeserializer 类为:
import java.io.IOException;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
public class StringWithoutSpaceDeserializer extends StdDeserializer<String> {
/**
*
*/
private static final long serialVersionUID = -6972065572263950443L;
protected StringWithoutSpaceDeserializer(Class<String> vc) {
super(vc);
}
@Override
public String deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
return p.getText() != null ? p.getText().trim() : null;
}
}
Run Code Online (Sandbox Code Playgroud)
该注释@InitBinder不能与 一起使用@RequestBody,您必须将其与@ModelAttribute注释一起使用
您可以在 Spring 文档中找到更多信息:
https://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html
| 归档时间: |
|
| 查看次数: |
4763 次 |
| 最近记录: |