javax 验证大小 trim 空格
javax validation size trim whitespace
我需要验证 POJO 中的一个字段,它必须是最小长度 = 2,忽略前导和尾随空格
class User {
@NotBlank
@Size(min = 2)
private String name;
}
它不适用于“A”
应该怎样?
首先Spring会使用setter-方法来设置属性的值。对于验证值 Spring 将使用 getter 方法获取它。这意味着,您可以 setter 方法中的 trim 值来准备验证:
public class User {
@NotBlank
@Size(min = 2)
private String name;
public void setName(String value){
this.name = value.trim();
}
public String getName(){
return this.name;
}
}
尝试使用以下方法,这将处理空格。而且您不需要 configure/code 每个字段的特定代码。当您处理更多字段时,这将很有帮助。
StringTrimmerEditor(true)——如果它只有空格,它就变成空的。
StringTrimmerEditor(false) -- 它只是修剪前导和尾随的空格。如果它只有空格,就把它设为空字符串。
在控制器中 class:
@InitBinder
public void initialBinderForTrimmingSpaces(WebDataBinder webDataBinder) {
StringTrimmerEditor stringTrimEditor = new StringTrimmerEditor(true);
webDataBinder.registerCustomEditor(String.class, stringTrimEditor);
}
所以一个更简单的建议(至少在我看来)是创建一个方法来检查 trimmed 长度是否小于最小值(在本例中为 2)或者在分配时简单地检查字符串。与创建自定义注释相比,它更容易且更简单。如果是这样,将名称设置为 trimmed 字符串,否则什么也不做。
例如:
public void setName(String str){
if(str.trim().length() < 2)
str = str.trim();
this.name = str;
}
我自己也在想这个确切的问题,但是虽然我不想有一个少于 2 个合法字符的名称,但我不希望 trim 实际的字符串,如果它只是有一个 space 在 2 个名字之间(例如名字和姓氏)。
是的,我知道这是在提出问题后大约 3 年。
我需要验证 POJO 中的一个字段,它必须是最小长度 = 2,忽略前导和尾随空格
class User {
@NotBlank
@Size(min = 2)
private String name;
}
它不适用于“A”
应该怎样?
首先Spring会使用setter-方法来设置属性的值。对于验证值 Spring 将使用 getter 方法获取它。这意味着,您可以 setter 方法中的 trim 值来准备验证:
public class User {
@NotBlank
@Size(min = 2)
private String name;
public void setName(String value){
this.name = value.trim();
}
public String getName(){
return this.name;
}
}
尝试使用以下方法,这将处理空格。而且您不需要 configure/code 每个字段的特定代码。当您处理更多字段时,这将很有帮助。 StringTrimmerEditor(true)——如果它只有空格,它就变成空的。
StringTrimmerEditor(false) -- 它只是修剪前导和尾随的空格。如果它只有空格,就把它设为空字符串。
在控制器中 class:
@InitBinder
public void initialBinderForTrimmingSpaces(WebDataBinder webDataBinder) {
StringTrimmerEditor stringTrimEditor = new StringTrimmerEditor(true);
webDataBinder.registerCustomEditor(String.class, stringTrimEditor);
}
所以一个更简单的建议(至少在我看来)是创建一个方法来检查 trimmed 长度是否小于最小值(在本例中为 2)或者在分配时简单地检查字符串。与创建自定义注释相比,它更容易且更简单。如果是这样,将名称设置为 trimmed 字符串,否则什么也不做。
例如:
public void setName(String str){
if(str.trim().length() < 2)
str = str.trim();
this.name = str;
}
我自己也在想这个确切的问题,但是虽然我不想有一个少于 2 个合法字符的名称,但我不希望 trim 实际的字符串,如果它只是有一个 space 在 2 个名字之间(例如名字和姓氏)。
是的,我知道这是在提出问题后大约 3 年。