Как написать JSP, который отображает список фрагментов JSP без кода переключения IF - PullRequest
2 голосов
/ 27 сентября 2011

У меня есть JSP, который составляет список объектов, а затем визуализирует фрагменты JSP в зависимости от класса каждого из объектов в списке.На данный момент это делается с помощью огромной цепочки операторов if внутри «родительского» JSP:

   if( bean.getFilterChildByType( Level.class ) != null )
   {
   %> <jsp:include page="filters/level.jsp"/> <% 
   }
   if( bean.getFilterChildByType( Sources.class ) != null )
   {
   %> <jsp:include page="filters/sources.jsp"/> <% 
   }
   ...

Итак, мой вопрос в том, что в JSP (Tomcat) можно достичь этой же функциональности безцепочка if, просто перебирая объекты в списке и, возможно, используя соглашение об именах "Имя класса" .jsp?Я играл с:

<%@ include file="filename" %>

, но, похоже, переменные в имени файла тоже не разрешены.

Ответы [ 3 ]

2 голосов
/ 27 сентября 2011

Примерно так должно работать

<jsp:include page="filters/<%=filename%>.jsp"/>
0 голосов
/ 27 сентября 2011

Это сложный вопрос!

Если включенные jsp-файлы (level.jsp, source.jsp и т. Д.) Не слишком сложны, как насчет переноса HTML-кода из этих файлов на вызов функцииобъекты, которые вы вызываете bean.getFilterChildByType (...) для?

Таким образом, вместо большого дерева if / else вы можете просто вызвать:

String html = bean.getHtmlForType();

..Вероятно, в цикле тоже получится намного чище.

0 голосов
/ 27 сентября 2011

Разрешите соответствующий jsp для включения (на основе bean.getFilterChildByType) на стороне контроллера, а затем просто передайте имя jsp контейнеру jsp. Теперь это можно легко включить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...