У меня есть 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.
Вопрос: может ли кто-нибудь предложить самый чистый подход для этой ситуации?