首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javax模式验证使用转义反斜杠打印消息

Javax模式验证使用转义反斜杠打印消息
EN

Stack Overflow用户
提问于 2022-03-14 23:07:49
回答 1查看 118关注 0票数 0

我使用javax @Pattern注释来验证字段。我使用双反斜杠来转义反斜杠字符:

代码语言:javascript
复制
@Pattern(regexp="^\\+[1-9]\\d{1,14}$", message = "must match format {regexp}")
private String phoneNo;

我得到的信息是:

代码语言:javascript
复制
must match format ^\\+[1-9]\\d{1,14}$

为什么返回的消息有双反斜杠?他们只是用来逃避角色的。这对用户来说是没有意义的。我想要传达的信息是:

代码语言:javascript
复制
must match format ^\+[1-9]\d{1,14}$

我知道我可以设置特定的消息,但是我想使用{regexp}参数。

EN

回答 1

Stack Overflow用户

发布于 2022-03-15 16:34:49

IYou可以尝试编写自定义MessageInterpolator

代码语言:javascript
复制
public class MessageInterpolatorImpl implements MessageInterpolator {
    private final MessageInterpolator origin;

    public MessageInterpolatorImpl(MessageInterpolator origin) {
        this.origin = origin;
    }

    @Override
    public String interpolate(String messageTemplate, Context context) {
        return interpolate(messageTemplate, context, Locale.getDefault());
    }

    @Override
    public String interpolate(String messageTemplate, Context context, Locale locale) {
        String newMessageTemplate = messageTemplate;
        if (context.getConstraintDescriptor().getAnnotation() instanceof Pattern pattern) {
            String normalizedPattern = java.util.regex.Pattern.compile(pattern.regexp()).toString();
            newMessageTemplate = messageTemplate.replaceAll("\\{regexp}", normalizedPattern);
        }
        return origin.interpolate(
            newMessageTemplate,
            context,
            locale
        );
    }
}

...

@Configuration
class Config {

    @Autowired
    public void tuneValidator(LocalValidatorFactoryBean validatorFactory) {
        MessageInterpolator origin = validatorFactory.getMessageInterpolator();
        validatorFactory.setMessageInterpolator(new MessageInterpolatorImpl(origin));
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71475165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档