java - JSP 自定义标签库 : Nested Evaluation

标签 java jsp taglib

假设我有我的自定义标签库:

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

<mytaglib:doSomething>
  Test
</mytaglib:doSomething>

在 taglib 类中,我需要处理一个模板并告诉 JSP 重新评估它的输出,例如,如果我有这个:

public class MyTaglib extends SimpleTagSupport {

  @Override public void doTag() throws JspException, IOException {
    getJspContext().getOut().println("<c:out value=\"My enclosed tag\"/>");
    getJspBody().invoke(null);
  }
}

我的输出是:

<c:out value="My enclosed tag"/>
Test

当我真正需要输出这个时:

My enclosed tag
Test

这可行吗?怎么办?

谢谢。

最佳答案

Tiago,我不知道如何解决您的确切 问题,但您可以从文件中解释 JSP 代码。只需创建一个 RequestDispatcher 并包含 JSP:

    public int doStartTag() throws JspException {
    ServletRequest request = pageContext.getRequest();
    ServletResponse response = pageContext.getResponse();

    RequestDispatcher disp = request.getRequestDispatcher("/test.jsp");
    try {
        disp.include(request, response);
    } catch (ServletException e) {
        throw new JspException(e);
    } catch (IOException e) {
        throw new JspException(e);
    }
    return super.doStartTag();
}

我在 Liferay portlet 中测试了这段代码,但我相信它无论如何都应该在其他环境中工作。如果没有,我想知道:)

HTH

关于java - JSP 自定义标签库 : Nested Evaluation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2326981/

相关文章:

c++ - 将预编译库复制到构建目录或将它们添加到 QBS 项目中的 PATH

java - 从两个下拉列表中的任一下拉列表中获取值

eclipse - 自定义 jsf taglib 的自动完成

java - 如何写入 Netbeans 调试器控制台(使用 Java)?

java - 如何使用 bootstrap select 在每个 spring mvc3 选择列表中设置所选项目?

javascript - 我无法将 javaScript 和 css 包含到我的 JSP 页面中

java - Formfile getFilename 和过滤

java - 从抽象类继承方法错误

java - 如何一次打印整个文本文件而不是第二次?

java - 在 Struts 2 中使用 WebSocket API