对于自定义标签类中JspBody类的invoke方法的理解
下面是javaeeAPI中对于invoke()方法的介绍:
其中的参数out是一个Writer类的对象,如果写null,就是将标签体内容写到了与此jsp相关联的JspWriter对象,也就是下面的w:
<% JspWriter w = pageContext.getOut(); %>
这样就可以将标签体的内容输出到浏览器端。
package online.mytag; import java.io.IOException; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.SimpleTagSupport; public class IpTag extends SimpleTagSupport { @Override public void doTag() throws JspException, IOException { getJspBody().invoke(null); } }
但是我们可以写一个其他的Writer类实现类的子类,比如StringWriter类
这样我们就可以对于标签体内的内容进行操作了,比如转换大小写:
@Override public void doTag() throws JspException, IOException { JspFragment jspBody = getJspBody(); StringWriter sw = new StringWriter(); //这里就能将标签体中的内容写到sw流中,可以自己做一下操作 jspBody.invoke(sw); //将标签体体中的字母转换为大写 String msg = sw.toString().toUpperCase(); //将转换后的内容输出到jsp页面中 getJspContext().getOut().write(msg); }
这也是获取标签体内容的一种方法。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?