Ответ 1
Нет, невозможно использовать переменные аргументы в выражениях EL-метода, не говоря уже о функциях EL.
Лучше всего создать несколько разных именованных методов с различным количеством фиксированных аргументов.
public static boolean isValueIn2(Integer value, Integer option1, Integer option2) {}
public static boolean isValueIn3(Integer value, Integer option1, Integer option2, Integer option3) {}
public static boolean isValueIn4(Integer value, Integer option1, Integer option2, Integer option3, Integer option4) {}
// ...
Как сомнительная альтернатива, вы можете передать разделимую строку и разбить ее внутри метода
#{webUtilMB.isValueIn(OtherBean.category.id, '2,3,5')}
или даже строковый массив, созданный fn:split()
в разделимой строке
#{webUtilMB.isValueIn(OtherBean.category.id, fn:split('2,3,5', ','))}
но в любом случае вам все равно нужно проанализировать их как integer или преобразовать целое число переданных в строку.
Если вы уже находитесь на EL 3.0, вы также можете использовать новый синтаксис коллекции EL 3.0, не требуя всей функции EL.
#{[2,3,5].contains(OtherBean.category.id)}