Вызов метода с параметром внутри цикла JSTL

У меня есть JSP, который должен напечатать некоторый текст, который создается путем использования итератора цикла и передачи его другому объекту ( Spring bean), что-то вроде:


   

Очевидно, что приведенный выше код недействителен как JSTL . Оператор разрешает только вызовы без параметров. Я вижу следующие решения проблемы:

1) Скриплеты


  <%
    SomeType myVar = (SomeType) pageContext.getAttribute("myVar");
    SomeOtherType anotherObject = (SomeOtherType) pageContext.getAttribute("anotherObject");
    YetAnotherType result = anotherObject.getFoo(myVar);
    pageContext.setAttribute("result", result);
  %>
  

Очевидным недостатком здесь является загрязнение кода JSP и общее уродство.

2) Написание тега, который делает то, что делается внутри скриптлетов. Типичный пример чрезмерной разработки, yuck!

3) Декомпозируйте коллекцию myVars и замените каждый myVar динамическим прокси , InvocationHandler из которых должен добавить дополнительный метод без параметров для выполнения всех вызовов getFoo () через anotherObject . Все это будет сделано в контроллере, поэтому JSP останется чистым, а myVar останется прежним. Но по какой цене?

Я не могу добавить метод .getFoo () к myVar , потому что он там не подходит и нарушит разделение задач.

Похоже, что передача параметров будет возможна в JSP / EL 2.2, но я использую Tomcat 6.0.29, который объединяет только EL 2.1 API.

Вопрос: может ли кто-нибудь предложить самый чистый подход для этой ситуации?

7
задан mindas 20 July 2011 в 10:37
поделиться