【问题标题】:Java Custom tag containing generated JSTL : not interpreted包含生成的 JSTL 的 Java 自定义标记:未解释
【发布时间】:2012-04-19 06:51:10
【问题描述】:

我有一个完全没有正文的自定义标签。为简单起见,我正在尝试以编程方式替换空主体,

[<c:out value="SUCCESS!"/>]

目标是看到使用标签的 JSP 显示的“[SUCCESS!]”,但我看到的只是“[]”,如果我查看生成的源代码,我可以看到 c:out声明写在括号之间的页面上,但不解释。

有没有一种通用的方法来实现这一点?最终目标是使用其他自定义标签而不是“c:out”标签。标签/内容将来自数据库。 我用 SimpleTagSupport 和 BodyTagSupport 尝试了不同的技术,但没有一个是成功的。实际上我不确定在技术上是否可行,因为那时标签已经被解释了..但是应该怎么做呢?

【问题讨论】:

    标签: java jsp tags


    【解决方案1】:

    the JSP is translated into a servlet 时,服务器标签(如您的自定义标签或 JSTL 标签)会转换为 Java 代码。比如下面的JSP代码:

    <c:out value="FooBar" />
    

    在 servlet 中被翻译成这样的东西:

    ....
    OutTag outTag = (OutTag) tagHandlerPool.get(OutTag.class);
    outTag.setPageContext(pageContext);
    outTag.setParent(null);
    outTag.setValue(new String("FooBar"));
    int evalOut = outTag.doStartTag();
    ....
    

    在您的自定义标记中,您可以调用其他 Java 类/方法,并且可以将 HTML 代码(不是 JSP 代码)写入响应。

    [&lt;c:out value="SUCCESS!"/&gt;] 不会被解释,因为在这个级别它只是一个直接写入响应的字符串。

    【讨论】:

      猜你喜欢
      • 2012-11-16
      • 1970-01-01
      • 2011-04-16
      • 1970-01-01
      • 2012-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-14
      相关资源
      最近更新 更多