【问题标题】:Custom Tag to use another JSPs in your JSP based on conditions自定义标记以根据条件在您的 JSP 中使用另一个 JSP
【发布时间】:2015-03-16 16:52:02
【问题描述】:

我有一个需求,我需要在某个 JSP 中包含一个 JSP,而我需要包含的 JSP 的路径取决于某些条件。

我使用了 getJspContext().include(),但它破坏了未来的请求。

所以我开始使用 getJspBody().invoke(StringWriter writer)。

我面临的问题是它将执行自定义标签中传递的JSP内容,类似于:

<%@ include file="addressForm.jsp" %>

但是我需要在 TAG 中指定 JSP 的路径,以便我可以根据不同的条件使用不同的路径。

我检查过,但没有找到设置 JSP 正文的正确方法。

请说明如何实现?

【问题讨论】:

    标签: jstl jsp-tags


    【解决方案1】:

    这是包含 JSP 的首选方式:

    <c:import url="addressForm.jsp"/>
    

    你可以使 url 参数动态化(${ ... } 中的东西是一个变量)。

    <c:import url="${path}/${form}.jsp"/>
    

    所以在本例中,${path} 是一个您可以设置的变量,与 ${form} 相同。如果您想使用这种类型的包含,请确保您还在 JSP 页面的顶部包含它:

    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    

    有大量关于使用 JSTL 和“核心”标签库的示例和教程。这是一个:http://www.javatpoint.com/jstl

    【讨论】:

    • 但这需要我为每个需要包含 JSP 的 JSP 定义“路径”。这就是为什么我需要自定义标签,它将 jspName 作为参数,JSP 路径将在 CustimTag.java 中计算。
    • 你没有定义“路径”,你计算它并根据某些条件动态设置它。例如使用 c:choose 语句。显然我不明白你的问题,但是根据你所描述的(我可能没有正确理解它),自定义标签会比必要的更复杂。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-16
    • 2016-01-05
    • 2012-05-22
    • 1970-01-01
    • 1970-01-01
    • 2015-01-27
    相关资源
    最近更新 更多