Файл пользовательских тегов JSP и динамические атрибуты
У меня есть пользовательский файл тегов тегов JSP, который является оболочкой для элементов управления вводом HTML - выпадающий список и т. Д., Вот так -
<mytag:dropdown table="customer_master" style="display:block;" class="dblist"/>
Здесь "таблица" является объявленным атрибутом тега, где в качестве стиля классом являются динамические атрибуты.
Теперь я хотел бы обернуть это в другой тег, как это -
<mytag:search-filter type="dropdown" validate="true" table="mytable" style="display:block;" class="dblist">
Я пытаюсь реализовать mytag: search-filter следующим образом -
<@tag .... dynamic-attributes="dynattrs">
<@attribute name="type" required="true">
<c:if test="${type == 'dropdown'}">
<mytag:dropdown table="$dynattrs['table']">
</c:if>
Внешний тег имеет свой собственный набор объявленных атрибутов, и я хочу, чтобы атрибуты внутреннего тега передавались как динамические атрибуты внешнему тегу. Внешний тег затем передаст свои динамические атрибуты внутреннему тегу.
Я пробовал следующее, и ни один из них, кажется, не работает -
<c:set var="attrs">
<c:forEach items="${dynattrs}" var="a">
${a.key}="${a.value}"
</c:forEach>
</c:set>
<mytag:dropdown table="$dynattrs['table']" ${attrs}/>
Выше приведено сообщение об ошибке "Неопределенный тег% lt; mytag: выпадающий список"
<mytag:dropdown table="$dynattrs['table']">
<c:forEach items="${dynattrs}" var="a">
<jsp:attribute name="${a.key}" trim="true">${a.value}</jsp:attribute>
</c:forEach>
</mytag:dropdown>
** Выше не выдает никакой ошибки, но значение атрибута внутри внутреннего тега всегда пусто.
Ограничения у меня есть:
а) Я хочу придерживаться теговых файлов и не хочу использовать реализацию класса Java TagSupport.
б) Насколько это возможно, не нужно изменять реализацию внутреннего тега, потому что он широко используется в его текущей форме, и любое изменение в нем означает огромные усилия по переработке.
Можно ли добиться того, что я пытаюсь сделать?
Почему вышеупомянутое не работает (особенно второй)?