JSP自定义标记文件和动态属性

时间:2016-05-20 00:57:22

标签: jsp-tags tagfile dynamic-attributes

我有一个自定义JSP标记标记文件,它是HTML输入控件的包装 - 下拉等,就像这样 -

<mytag:dropdown table="customer_master" style="display:block;" class="dblist"/>

这里&#34;表&#34;是标记的声明属性,其中style,class是dynamic-attributes。

现在我想把它换成另一个标签 -

<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}/> 

上面给出了&#34;未终止标记%lt; mytag:dropdown&#34;错误

<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>

**以上内容不会引发任何错误,但内部标记内的属性值始终为空。

我有限制因素:

a)我想坚持使用标记文件,不想使用TagSupport的Java类实现。

b)尽可能不要更改内部标记实现,因为它以当前形式广泛使用,对它的任何更改都意味着返工的巨大努力。

是否有可能实现我的目标?

为什么以上不起作用(特别是第二个)?

0 个答案:

没有答案