Преобразуйте массив в коллекцию с помощью помощника collect
и выполните над ним операции. Есть много вспомогательных функций для достижения того, что вы пытаетесь сделать, с небольшим количеством строк кода.
Вы могли создать интерфейс с общепринятой методикой для каждого класса для реализации, который испустил HTML/JSP, в котором Вы нуждались полиморфным способом. Я не являюсь настолько сумасшедшим об этом предложении, потому что оно пропускает пользовательский интерфейс в образцовые классы плохим способом. Возможно, иначе вокруг этого был бы Шаблон "посетитель", который мог испустить UI для Вас.
Так или иначе необходимо было бы добавить код, когда новый тип появился.
Я отказался бы создать пользовательскую библиотеку тегов. Необходимо было бы стараться удостовериться, что стиль не просочился в него, делая CSS, очищающий невозможный.
Вы могли включать другой jsp, который сделает корректный рендеринг для данного типа. например:
<c:forEach var="o" items="${bigListofObjects}" >
<c:import url="render-${o.type}.jsp"/>
</c:forEach>
У Вас мог быть внешний цикл foreach, который выполняет итерации по списку списка типов:
<c:forEach var="t" items="${listOfTypes}">
<c:forEach var="o" items="${bigListofObjects}">
<if test='${o.type==t}'>
<!-- render -->
</c:if>
</c:forEach>
</c:forEach>