我有一個JavaBean中下面的代碼:我的自定義訪問是從未使用過,只有場默認值由Hibernate驗證,而不是
@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沒有爲該變量生成自己的訪問器。
任何人都可以請幫忙嗎?
附:我不能直接把@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";
}
...
你如何驗證bean?你想要在哪一層應用中進行驗證?什麼觸發驗證?或者你是否直接使用Bean Validation API進行驗證?是否有其他約束你的bean正在驗證?也許你可以發佈完整的bean? – Hardy 2013-04-24 12:03:46
哈代!我已根據要求編輯了我的帖子。是的,還有其他一些限制,如上所示。請讓我知道,如果你需要進一步的信息... – balteo 2013-04-24 15:51:12