我遇到了一个问题,试图找到关于如何避免在自定义标记处理程序中生成 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()
.
我有一个问题想得到答案,但谷歌的众神今晚对我并不好:
- 如果我需要从标签处理程序插入一个 HTML 块,这是最好的方法吗?
- 在原始答案中,发布者使用了经典的标签处理程序。有没有办法使用简单的标记处理程序(即在扩展 SimpleTagSupport 的类中)来代替?
- 即使上面喜欢的问题中的提问者接受了答案,我也无法复制成功的结果。我是否遗漏了提问者提出的我遗漏的内容?
- 我只是以某种我什至不知道的方式离开基地吗?我对整个 jsp/servlets 有点陌生,我不能 100% 确定我应该使用这种设计模式。我基本上是在尝试设计调用后端 Java 的 jsp 文件,这些文件执行一些业务逻辑并生成结果 HTML,但就像我上面所说的,我不想
println()
在我的 Java 标记处理程序中粘贴一堆调用。
感谢您的任何帮助和/或见解!