Файл пользовательских тегов 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.

б) Насколько это возможно, не нужно изменять реализацию внутреннего тега, потому что он широко используется в его текущей форме, и любое изменение в нем означает огромные усилия по переработке.

Можно ли добиться того, что я пытаюсь сделать?

Почему вышеупомянутое не работает (особенно второй)?

0 ответов

Другие вопросы по тегам