Java Spring自定义格式化程序到字段批注不起作用
我正在尝试将格式化程序注释应用于下一个模型类中的字段“phone”:Java Spring自定义格式化程序到字段批注不起作用,java,spring,formatting,spring-annotations,formatter,Java,Spring,Formatting,Spring Annotations,Formatter,我正在尝试将格式化程序注释应用于下一个模型类中的字段“phone”: 公共类用户{ @联系人号码格式 私人电话; } 注释界面: @Target({ElementType.METHOD,ElementType.FIELD}) @保留(RetentionPolicy.RUNTIME) public@interface ContactNumberFormate{ } 格式化程序: @组件 公共类PhoneFormatter实现格式化程序{ @凌驾 公共字符串解析(字符串phoneNum、区域设置
公共类用户{
@联系人号码格式
私人电话;
}
注释界面:
@Target({ElementType.METHOD,ElementType.FIELD})
@保留(RetentionPolicy.RUNTIME)
public@interface ContactNumberFormate{
}
格式化程序:
@组件
公共类PhoneFormatter实现格式化程序{
@凌驾
公共字符串解析(字符串phoneNum、区域设置)引发ParseException{
phoneNum=phoneNum.trim();
字符串regex=“^\\(?(\\+*1)?[-.\\s*]?([0-9]{3})\\)?[-.\\s*]?([0-9]{3})[-.\\s*]?([0-9]{4})$”;
Pattern.compile(regex).matcher(phoneNum);
返回phoneNum;
}
@凌驾
公共字符串打印(字符串电话、区域设置){
回电话;
}
}
注释工厂:
公共类PhoneFormatAnnotationFormatterFactory实现
注释格式化程序工厂{
@凌驾
公用设置getPrinter(ContactNumberFormat ContactNumberFormat,类aClass){
返回新的PhoneFormatter();
}
@凌驾
公共解析器getParser(ContactNumberFormat ContactNumberFormat,类aClass){
返回新的PhoneFormatter();
}
}
FormatterRegistrar:
公共类应用程序FormatTerRegister实现FormatterRegistrar{
@凌驾
公共无效注册表格式(FormatterRegistry FormatterRegistry){
addFormatterForFieldAnnotation(新的PhoneFormatAnnotationFormatterFactory());
}
}
配置:
而且它不起作用:电话值保存在数据库中,但以非格式化形式保存
注意:当我在PhoneFormatter上使用断点在debug中运行测试时,测试完全通过。这意味着,我的格式化程序已超出进程。但当我在PhoneFormatAnnotationFormatterFactory.getFieldTypes
上设置断点时,测试中断
特别是,在返回Collections.singleton(String.class)上使用断点进行调试代码>输入
public set此行的目的是什么:Pattern.compile(regex).matcher(phoneNum)代码>?您没有对返回的匹配器执行任何操作。你们期望它做什么?我还并没有完全沉浸在格式化程序方法的实现中。现在我看到,我的应用程序没有看到任何实现的格式化程序注释……这一行的目的是什么:Pattern.compile(regex).matcher(phoneNum)代码>?您没有对返回的匹配器执行任何操作。你们期望它做什么?我还并没有完全沉浸在格式化程序方法的实现中。现在我看到,我的应用程序没有看到任何实现的格式化程序注释。。。