gpt4 book ai didi

jsp - 按名称动态调用 JSP 标签

转载 作者:行者123 更新时间:2023-12-04 15:43:30 24 4
gpt4 key购买 nike

有没有办法动态使用 JSP 自定义标签?
我有一个表示标签名称的变量,我想调用该标签,但要避免使用 switch 语句。

示例 :
我有标签 <my:foo attr="fooAttr" />和标签 <my:bar attr="barAttr" /> ,比我有 <c:set var="tagName" value="foo" /> .我想以某种方式使用 tagName 变量来调用 tag 。

最佳答案

我理解您的担忧...类似 <tags:${ tagname }/> ,不是吗?这种解决方案确实很诱人,但它涉及修改 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上面的属性并使用 <jsp:doBody/> 处理主体标准标签。

希望这将满足您的需求......

杰夫

关于jsp - 按名称动态调用 JSP 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28193838/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com