see this code I'm using and watch out for itemContext.getFormItem().getValue():
Code:
setPickListFilterCriteriaFunction(new FormItemCriteriaFunction() {
@Override
public Criteria getCriteria(FormItemFunctionContext itemContext) {
Criterion currentCountryCriteria = new Criterion(DatasourceFieldEnum.MV_ZIPCODE__COUNTRY_ID.getValue(), OperatorId.EQUALS,
selectedCountry.getValueAsString());
if (itemContext.getFormItem().getValue() != null) {
Criterion currentZipcodeCriteria = new Criterion(DatasourceFieldEnum.MV_ZIPCODE__ZIPCODE.getValue(), OperatorId.ISTARTS_WITH,
itemContext.getFormItem().getValue().toString());
Criterion currentCityCriteria = new Criterion(DatasourceFieldEnum.MV_ZIPCODE__ORTSVORSCHLAG.getValue(), OperatorId.ISTARTS_WITH,
itemContext.getFormItem().getValue().toString());
Criterion currentCityCriteria2 = new Criterion(DatasourceFieldEnum.MV_ZIPCODE__ORTSVORSCHLAG.getValue(), OperatorId.ICONTAINS,
" " + itemContext.getFormItem().getValue().toString());
AdvancedCriteria zipcodeOrCity = new AdvancedCriteria();
zipcodeOrCity.buildCriterionFromList(OperatorId.OR,
new Criterion[] { currentZipcodeCriteria, currentCityCriteria, currentCityCriteria2 });
AdvancedCriteria countryAndZipcodeOrCity = new AdvancedCriteria();
countryAndZipcodeOrCity.buildCriterionFromList(OperatorId.AND, new Criterion[] { currentCountryCriteria, zipcodeOrCity });
return countryAndZipcodeOrCity;
} else
return currentCountryCriteria;
}
});
Blama
Leave a comment: