Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
按名称动态调用JSP标记_Jsp_Dynamic_Tags - Fatal编程技术网

按名称动态调用JSP标记

按名称动态调用JSP标记,jsp,dynamic,tags,Jsp,Dynamic,Tags,有没有一种方法可以动态使用JSP自定义标记? 我有一个代表标记名称的变量,我想调用标记,但要避免switch语句 示例: 我有标签和标签,比我有。我想以某种方式使用标记名变量来调用标记 我理解你的担忧。。。类似于,不是吗?这样的解决方案确实很诱人,但它需要修改JSP规范,以接受不属于XML规范的动态命名标记 “半动态”但简单的解决方案可能包括创建一个封装切换逻辑的标记。它可能看起来像: <%@ tag body-content="empty" %> <%@ attribute

有没有一种方法可以动态使用JSP自定义标记? 我有一个代表标记名称的变量,我想调用标记,但要避免switch语句

示例
我有标签
和标签
,比我有
。我想以某种方式使用标记名变量来调用标记

我理解你的担忧。。。类似于
,不是吗?这样的解决方案确实很诱人,但它需要修改JSP规范,以接受不属于XML规范的动态命名标记

“半动态”但简单的解决方案可能包括创建一个封装切换逻辑的标记。它可能看起来像:

<%@ tag body-content="empty" %>
<%@ attribute name="tagname" required="true" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="tags" %>

<c:choose>
  <c:when test="${ tagname == 'tag1'}">
    <tags:tag1/>
  </c:when>
  <c:when test="${ tagname == 'tag2'}">
    <tags:tag2/>
  </c:when>
</c:choose>

然后,您可以在任何您喜欢的地方使用(并重复使用)它,使用如下内容:

<tags:my-switch tagname="${ tagname }"/>

当然,您可以添加可能需要的任何其他属性,标记的主体不必为空。事实上,如果需要处理某些标记体,请修改上面的
body content
属性,并使用
标准标记处理该体

希望这能满足你的需要


杰夫

除了下面提到的答案,你还找到了其他解决方案吗?