Я не могу определить такой метод, верно?
getSomeList(int a)
Нет.
А почему бы и нет?
Поскольку вы используете старый Tomcat 6, который не поддерживает EL 2.2, где была представлена эта функция.
Ивот что я получаю:
java.lang.NumberFormatException: null
java.lang.Integer.parseInt(Integer.java:417)
Потому что там это null
.<f:param>
работает только для ссылок / кнопок, а не для простых компонентов.
Чтобы заставить вызовы методов в EL работать, вам необходимо выполнить обновление до контейнера Servlet 3.0 / EL 2.2, такого как Tomcat 7, или заменить стандартную реализацию EL 2.1 в Tomcat 6 тем, который поддерживает параметризованные вызовы методов.,Подробнее см. этот ответ .После этого вы можете использовать
<f:selectItems value="#{bla.getSomeList(0)}" ... />
Альтернативой является замена List
на Map
, которая может быть пользовательской реализацией, которая выполняет (ленивую) загрузку по методу get()
.
public Map<String, List<Something>> getSomeMap() {
return someCustomLazyLoadingMap;
}
с
<f:selectItems value="#{bla.someMap.keyName}" ... />