0

如何让我自己的标签使用相同的资源(例如 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)
   }
}

这甚至可能吗?

4

2 回答 2

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);
       ...
   }
}

您还可以将其存储到会话或静态变量中(取决于您想要的范围)。

于 2012-04-12T16:38:34.617 回答
0

从一个公共类扩展您的自定义标签并将 XML 加载推迟到它。由于您想避免重复解析文档,您需要将文档变量本身设为静态。

或者,将文档加载和存储功能放在一个公共类中,您可以选择在一个独立的实用程序类中实现它,您从所有相关标签(支持类)中引用该实用程序类。

于 2012-04-12T16:38:45.590 回答