说我有我的自定义标签库:
<%@ 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中测试了此代码,但是我相信它无论如何也应该在其他上下文中工作。如果没有,我想知道:)
高温超导