Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaJSR303从注释字段访问bean字段_Java_Annotations - Fatal编程技术网

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 )