2012-04-12 5 views
0

独自のタグで同じリソース(たとえばxmlドキュメント)を使用するにはどうすればよいですか?JSPタグライブラリで同じオブジェクトを使用する

擬似コード:

JSP:

<readxml:getuser/> 
<readxml:getpassword/> 

のJava:

public class getpassword(or getuser) extends BodyTagSupport 
{ 
    if(doc) 
    { 
     out.println(doc) 
    } 
    else 
    { 
     doc = builder.build(file) 
     out.println(doc) 
    } 
} 

も可能ということですか?

+1

あなたは何を達成しようとしていますか?もっと具体的になりますか?どのような出力をしたいですか? –

+0

出力は関係ありません。私はXMLファイル全体を読んで、1つのタグごとに解析するのを避けたい。 –

答えて

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

ます。また、セッションまたは静的変数にそれを保存することができます(あなたが望む範囲に依存します)。

+0

OK、私はpageContextとセッションに何かを格納することの違いを知らなかった。 –

0

共通のクラスからカスタムタグを拡張し、XML読み込みをそのクラスに延期します。ドキュメントを繰り返し解析するのを避けたいので、ドキュメント変数自体を静的にする必要があります。

ドキュメントの読み込みと格納の機能を共通のクラスに配置する代わりに、すべての関連するタグ(サポートクラス)から参照するスタンドアロンのユーティリティクラスに実装することもできます。

+0

原則としてあなたは正しいですが、私はこれを最初にやろうとしましたが、タグクラスは共通のクラスから既に拡張されており、デザイン全体を深く掘り下げたくありません。 –

関連する問題