java - 避免在 Java 自定义标记处理程序中生成 html,第 2 部分

标签 java servlets jsp-tags

我在试图找到 this question 的答案时遇到了困难。关于如何避免在自定义标记处理程序中生成 HTML。像这个提问者一样,我试图避免标记处理程序中出现一堆 println() 语句,并且我真的很想从另一个 .jsp 文件中提取数据。

因此,我尝试了建议的方法:

public int doStartTag() throws JspException {
    try {
        pageContext.getResponse().flushBuffer();
        pageContext.getRequest()
                .getRequestDispatcher("/views/tags/loginBlock.jsp")
                .include(pageContext.getRequest(), pageContext.getResponse());
    } catch (Exception e) { throw new RuntimeException(e); }

    return EVAL_BODY_INCLUDE;
}

然而,我得到的是loginBlock.jsp的内容上面标签所在的jsp的输出,而不是像我预期的那样插入标签的位置,甚至调用flushBuffer()

我有一个问题想要找到答案,但今晚 Google 之神对我并不友善:

  1. 如果我需要从标记处理程序插入 HTML block ,这是最好的方法吗?
  2. 在原始答案中,发布者使用了经典的标签处理程序。有没有办法使用简单的标签处理程序(即在扩展 SimpleTagSupport 的类中)来实现这一点?
  3. 尽管上述问题中的提问者接受了答案,但我无法复制成功的结果。我是否遗漏了提问者提到的但我遗漏的内容?
  4. 我是不是在某种程度上偏离了基地,甚至连我自己都没有意识到?我对整个 jsp/servlet 事物有点陌生,并且我不能 100% 确定这种设计模式是我应该使用的。我基本上是在尝试设计调用后端 Java 的 jsp 文件,该后端 Java 执行一些业务逻辑并生成结果 HTML,但就像我上面所说的那样,我不想粘一堆 println() 调用我的 Java 标记处理程序。

感谢您的帮助和/或见解!

最佳答案

我找到了一个答案,但我不知道这是否是最佳答案。我将 buffer="none"插入主 jsp 页面的页面指令中,现在辅助 jsp 页面符合其应有的位置。再说一次,我不知道这是否是最好的答案,因为在我看来,我应该能够缓冲页面。如果有人有更好的建议,我会将这个问题保留几天。

关于java - 避免在 Java 自定义标记处理程序中生成 html,第 2 部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11498406/

相关文章:

css - 表单输入框和标签对齐方式在 IE9 中关闭

java - 创建一个消失的 JPanel?

Java对象添加/更新/删除算法

servlets - Wicket 调用 Servlet

java - 如何让Servlet识别调用者JSP和 session

java - 从 Java servlet 调用线程

java - 使用IntWritable的Hadoop Reduce输出始终在2处停止

java - 如何让方法像glide库一样流畅?

java - 使用 spring mvc 跟踪多个相关的输入框

JSP 错误 - 多次出现具有不同值的 'contentType' 是非法的