javax.validation如何在验证消息中获取属性名称

时间:2015-06-12 17:56:43

标签: java validation

我正在寻找在验证邮件中使用属性名称的正确方法,例如{min}{regexp}

我现在已经搜索了几次这个问题,显然没有一种本地方法可以做到这一点。

@NotNull(message = "The property {propertyName} may not be null.")
private String property;

以前有没有人经历过这个并且已经设法找到解决方案?

更新1

使用自定义消息插补器应该是这样的:

public class CustomMessageInterpolator implements MessageInterpolator {

    @Override
    public String interpolate(String templateString, Context cntxt) {

        return templateString.replace("{propertyName}", getPropertyName(cntxt));
    }

    @Override
    public String interpolate(String templateString, Context cntxt, Locale locale) {
        return templateString.replace("{propertyName}", getPropertyName(cntxt));
    }

    private String getPropertyName(Context cntxt) {
        //TODO: 
        return "";
    }
}

1 个答案:

答案 0 :(得分:3)

一种解决方案是使用两条消息并将属性名称夹在它们之间:

error.notblank.part1of2=The following field must be supplied: '
error.notblank.part2of2='. Correct and resubmit.

然后在您的消息资源文件中:

$query = "INSERT INTO [competitionTrade]
                       ([fullName]
                       ,[date]
                       ,[limitOrder]
                       ,[quantity]
                       ,[tickerSymbol]
                       ,[limitPrice]
                       ,[contingentOrder]
                       ,[contingentQuantity]
                       ,[contingentLimitPrice])
                 VALUES
                       ($fullName,
                       $date,
                       $limitOrder,
                       $quantity,
                       $ticSymbol,
                       $limitPrice,
                       $contingentOrder,
                       $contingentQuantity,
                       $contingentLimitPrice";

验证失败时,它会生成消息"必须提供以下字段:'地址行1'。正确并重新提交。"