我在javabean中有以下代码:
@AssertTrue
private boolean addressReferenceValid;
public boolean isAddressReferenceValid() {
if (addressType.equals(AddressType.ON_THE_FLY_ADDRESS) && StringUtils.isEmpty(addressReference)) {
return false;
}
return true;
}
我遇到的问题是从未使用 isAddressReferenceValid 访问器,似乎只使用 addressReferenceValid 的默认值(即false
)。
我已经仔细检查过Spring Roo没有为该变量生成自己的访问器。
有人可以帮忙吗?
PS 我无法将@AssertTrue注释直接放在方法上,因为ValidationMessages.properties
文件中的以下键无法解析:{{1} }
编辑1 :
Full bean:
AssertTrue.familyAdvertisementSearchCriteriaInfo.addressReferenceValid
验证发生在以下控制器中:
@RooEquals
@RooJavaBean
public class FamilyAdvertisementSearchCriteriaInfo {
@Valid
private FamilyAdvertisementSearchCriteria searchCriteria;
private Address currentAddress;
private String addressReference;
@NotNull
private AddressType addressType;
@AssertTrue(groups=Default.class)
private boolean addressReferenceValid;
public boolean isAddressReferenceValid() {
if (addressType.equals(AddressType.ON_THE_FLY_ADDRESS) && StringUtils.isEmpty(addressReference)) {
return false;
}
return true;
}
}
答案 0 :(得分:1)
我想我现在明白你要做什么了。您希望将约束放在字段上,但在验证期间,您希望调用/使用方法isAddressReferenceValid。那不行。如果在字段上放置约束,则使用访问权限来获取要验证的属性(使用反射)。如果将其放在方法/ getter方法上,则使用访问权限。所以他放置的注释很重要。您似乎已经发现将注释放在方法上可行。当然,这会导致注释的放置不一致。你可以:
只是一些想法。这一切都取决于您的使用案例和个人喜好。