如何从自定义jsp标签中包含另一个jsp页面

问题描述

我想要一个带有一个字符串属性自定义 Jsp 标记,如果这是另一个 jsp 文件的路径,那么我想在页面中包含该 JSP(表现为 jsp:include);如果没有,那么我只想在页面正文中输出字符串。

我不知道怎么做 jsp:include 部分...

我看到 SimpleTagSupport 中有一个 setJspBody,我可以传递一个 JspFragment ......但我不知道如何得到它......我希望在 javax.servlet.jsp 中找到类似 IncludeTag 类的东西,我可以将这个逻辑委托给,像这样 setJspBody( new IncludeTag(...).getJspFragment() ) 但我没有找到在 the docs 中实现 jsp:include 功能的类。

解决方法

我使用了 PageContext.include

public class MyIncludeTag extends TagSupport {
   private String page;
   //getters setters
   @Override
   public int doStartTag() throws JspException {
     try {
            pageContext.include(page);
        } catch (ServletException | IOException e) {
            throw new JspException("Failed to include " + page,e);
        }
        return super.doStartTag();
   }
}