JavaJSR303从注释字段访问bean字段
在我的场景中,我试图创建一个注释,验证一个字段是否已填充,另一个字段是否具有某种值 界面如下所示:JavaJSR303从注释字段访问bean字段,java,annotations,Java,Annotations,在我的场景中,我试图创建一个注释,验证一个字段是否已填充,另一个字段是否具有某种值 界面如下所示: @Target({ElementType.FIELD, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented @Constraint(validatedBy = RequiredIfFieldHasValueValidator.class) public @interface RequiredIfFieldHasV
@Target({ElementType.FIELD, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(validatedBy = RequiredIfFieldHasValueValidator.class)
public @interface RequiredIfFieldHasValue
{
String message() default "Required if selected";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
/*
FieldName against which we validate
*/
String fieldName() default "";
/*
Field value that indicates requirement
*/
String fieldValue() default "";
}
我在Spring MVC中使用它,并按如下要求进行验证:
public String myFormPostPost( Model model, @Valid @ModelAttribute MyForm form, indingResult result )
所以我的目标是:如果字段类型的值等于DICT,那么字段dictValue应该是必需的(不是空的)
我的问题是我是否可以访问
验证中的当前bean值应该在这里(1)
?我知道我可以对整个bean进行注释,但我更喜欢这种方式。好吧,我想这是不可能的,所以我坚持使用类anotated解决方案:
好吧,我想这是不可能的,所以我坚持使用第二种解决方案:
你必须用豆子吗?如果改用构建器,则可以在
.build()
时间执行此类验证,而无需使用注释。您可以更具体一点,或者提供一些示例吗?也许我应该提到我在Spring MVC中使用它,并根据请求进行如下验证:公共字符串myFormPostPost(Model Model,@Valid@modeltribute MyForm form,BindingResult)
好吧,你应该提到Spring MVC,是的,并添加相关标签。我不做Spring,所以我不知道你是否可以使用它的模式。应该有,对不起,我的坏:)你必须使用bean吗?如果改用构建器,则可以在.build()
时间执行此类验证,而无需使用注释。您可以更具体一点,或者提供一些示例吗?也许我应该提到我在Spring MVC中使用它,并根据请求进行如下验证:公共字符串myFormPostPost(Model Model,@Valid@modeltribute MyForm form,BindingResult)
好吧,你应该提到Spring MVC,是的,并添加相关标签。我不做Spring,所以我不知道你是否可以使用该模式。应该有,对不起,我的坏:)
public class Form {
private String type;
@RequiredIfFieldHasValue(fieldName = "type", fieldValue = "DICT")
private String dictValue;
}
public String myFormPostPost( Model model, @Valid @ModelAttribute MyForm form, indingResult result )