有没有办法编写一个公共代码或配置,可以从Web应用程序中从表单提交输入的任何字符串中删除尾随或前导空格,这样我们就不应该在将这些字符串解析为整数或数字时在java代码级别获取NumberFormatException 。例如“15246”。因为在spring命令对象的情况下,如果它有一个整数字段,那么它会尝试隐式地将它转换为整数。除IE浏览器外,其他浏览器不允许数字字段具有前导或尾随空格。
尝试使用java内置修剪方法
" 15246".trim()
然后投入Integer.valueOf(" 15246".trim())
如果您使用Spring-Boot 2,它将立即开箱即用:
test.Java
package hello;
public class Test {
private Integer test;
public Integer getTest() {
return test;
}
public void setTest(Integer test) {
this.test = test;
}
@Override
public String toString() {
return "Test{test=" + test + '}';
}
}
test controller.Java
package hello;
@RestController
public class TestController {
@RequestMapping(value = "/test", method = RequestMethod.GET)
public String testGet(@RequestParam("test") Integer integer) {
return "" + integer;
}
@RequestMapping(value = "/test_p", method = RequestMethod.POST)
public String testPost(@RequestBody Test test) {
return "" + test;
}
}
用curl测试POST
curl -X POST \
http://localhost:8080/test_p \
-H 'Content-Type: application/json' \
-d '{"test": " 876867"}'
测试{测试= 876867}
用卷曲测试GET
curl -X GET \
'http://localhost:8080/test?test=%20542543' \
-H 'Content-Type: application/json' \
542543
这项工作的原因来自class StringToNumberConverterFactory
其中使用NumberUtils which indeed trims all whitespace
String trimmed = StringUtils.trimAllWhitespace(text);