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
ファイル内の次のキーが解決されないためです。AssertTrue.familyAdvertisementSearchCriteriaInfo.addressReferenceValid
編集1:
フルビーン:
@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;
}
}
検証は次のコントローラーで行われます。
@RequestMapping(value = "/familyAdvertisementSearch", method = RequestMethod.POST, produces = "text/html")
public String familyAdvertisementSearchResults(@ModelAttribute @Validated(Default.class) FamilyAdvertisementSearchCriteriaInfo familyAdvertisementSearchCriteriaInfo, BindingResult bindingResult, Model model) {
if(bindingResult.hasErrors()){
populateModel(model);
familyAdvertisementSearchCriteriaInfo.setCurrentAddress(memberService.retrieveCurrentMemberAddress());
return "search/familyAdvertisementSearchForm";
}
...