Вы можете передать список или массив в пользовательскую функцию.
Предупреждение: этот код не проверен и может заставить вас чувствовать себя грязным - это полный взлом.
Нам нужны два артефакта, зарегистрированных как управляемые бобы.
1) сорвано Map
тип:
/** Important: must be none-scoped */
public class ArrayBuilder extends AbstractMap<Object, Object> {
private List<Object> list = new ArrayList<Object>();
@Override public Object get(Object entry) {
if(entry instanceof MakeArray) {
return list.toArray();
} else {
list.add(entry);
return this;
}
}
@Override public Set<Entry<Object, Object>> entrySet() {
return Collections.emptySet();
}
}
яд таблетки, чтобы вызвать создание массива:
/** should be application scoped bean */
public final class MakeArray {
}
Выражение ЭЛ:
#{fn:foo(arrayBuilder['one']['two']['three'][makeArray])}
Цель этого кода передать массив Object
, содержащий три строки, к функции foo
.
Я понятия не имею, действительно ли это работает.
Спасибо за такой быстрый ответ, @ Balusc !! Фактически, я должен использовать параметризованные сообщения из пакета сообщений в JavaScript, участвующих в моей странице. Сообщение об ошибке или предупреждении о попытке удалить файл с именем файла, параметризованным в комплекте сообщений. – BenhurCD
См. Обновленный ответ. – BalusC