Проверка наличия элемента в списке с помощью mvel

У меня был с собой список. Список вроде.

List<String> locations=new ArrayList<String>();
locations.add("California");
location.add("sydney");
location.add("Egypt");

Теперь я хочу проверить в mvel, есть ли в этом списке Калифорния и Сидней. Я думал, что смогу использовать приведенный ниже, но это дает ошибку.

     location contains "sydney","california"

Как узнать, содержит ли список несколько элементов в mvel?


person Narendra    schedule 18.01.2013    source источник
comment
местоположение содержит Сидней && местоположение содержит Калифорнию   -  person RoflcoptrException    schedule 18.01.2013
comment
Извините за мой предыдущий ответ. Удалил, чтобы никого не вводить в заблуждение. mvel основан на Java, так почему «содержит» не работает?   -  person m.spyratos    schedule 18.01.2013
comment
Спасибо Roflcoptr за ваш комментарий. Но mvel разрешает следующее: User (country== IN || = US || CA) . Разве такой формат не доступен для проверки элементов в списке?   -  person Narendra    schedule 18.01.2013


Ответы (3)


Это будет работать:

list.containsAll(["sydney", "california"])
person Mike Brock    schedule 20.01.2013

Это работает для меня:

 //@Test
 public void testListContains() {
      List<String> locations = new ArrayList<String>();

     locations.add("California");
     locations.add("sydney");
     locations.add("Egypt");

     String expression = "thelocations contains acity && thelocations contains anothercity";

     Map container = new HashMap();

     container.put("thelocations", locations);

     container.put("acity", "sydney");

     container.put("anothercity","California");

     Object result = MVEL.eval(expression,container);

     System.out.println(result);
 }
person kvn    schedule 09.11.2013

Чтобы упростить ответ kvn, вы можете вставить города, с которыми вы тестируете, в выражение. Просто заключите его в одинарные кавычки:

public void testListContains() {
    List<String> locations = new ArrayList<String>();
    locations.add("California");
    locations.add("sydney");
    locations.add("Egypt");

    String expression = "thelocations contains 'sydney' && thelocations contains 'California'";

    Map container = new HashMap();
    container.put("thelocations", locations);

    Object result = MVEL.eval(expression,container);

    System.out.println(result);
}
person Alex Lipov    schedule 25.03.2014