如何让我自己的标签使用相同的资源(例如xml doc)?
伪代码:
JSP:
<readxml:getuser/>
<readxml:getpassword/>
爪哇:
public class getpassword(or getuser) extends BodyTagSupport
{
if(doc)
{
out.println(doc)
}
else
{
doc = builder.build(file)
out.println(doc)
}
}
这甚至可能吗?
答案 0 :(得分:2)
您可以在当前请求的上下文中存储临时数据:
public class getpassword(or getuser) extends BodyTagSupport
{
public int doEndTag() {
Doc doc = pageContext.getRequest().getAttribute("doc");
if(doc == null)
{
pageContext.getRequest().setAttribute("doc", doc = builder.build(file));
}
out.println(doc);
...
}
}
您还可以将其存储到会话或静态变量中(取决于您想要的范围)。
答案 1 :(得分:0)
从公共类扩展自定义标记,并将XML加载延迟到它。由于您希望避免重复解析文档,因此需要将文档变量本身设置为静态。
除了将文档加载和存储功能放在公共类中之外,您可以选择在所有相关标记(支持类)中引用的独立实用程序类中实现它。