2011-12-30 7 views
1

タイトルのほとんどすべて。ドキュメントは、この呼び出しの結果については明確ではありません。JspFragment.invokeは何をするのですか?

私の特定の状況は、このメソッドはパラメータでnullを渡して呼び出され、前後にコードがあるということです。私はこの呼び出しの目的を得ていません...
コンテキストはSimpleTagSupportを拡張するクラスです(私はtaglibのことをやっています)。

ありがとうございます。ここでjavadocは次のとおりです。

public abstract void invoke(java.io.Writer out) 
        throws JspException, 
          java.io.IOException 

    Executes the fragment and directs all output to the given Writer, or the JspWriter returned by the getOut() method of the JspContext associated with the fragment if out is null. 

    Parameters: 
     out - The Writer to output the fragment to, or null if output should be sent to JspContext.getOut(). 
    Throws: 
     JspException - Thrown if an error occured while invoking this fragment. 
     SkipPageException - Thrown if the page that (either directly or indirectly) invoked the tag handler that invoked this fragment is to cease evaluation. The container must throw this exception if a Classic Tag Handler returned Tag.SKIP_PAGE or if a Simple Tag Handler threw SkipPageException. 
     java.io.IOException - If there was an error writing to the stream. 

答えて

1

を呼び出すまあ、それはタグがしたいときに実行するためにJSPフラグメント(タグのボディ)を受信するために、タグを可能にします。たとえば、条件引数を受け取り、タグ本文を持つifタグを設計できます。条件がfalseの場合、タグは何もしません。真の場合、タグはフラグメントを呼び出します。 loopタグは、そのiterationCount引数が要求する回数だけそのフラグメントを呼び出すことができます(その本体にあるJSPコードを実行します)。

このフラグメントは、おそらくレスポンスに含めるHTMLコードを生成するために使用されるため、このメソッドのout引数はフラグメントの出力が生成される場所です。たとえば、フラグメントをJSPライターに直接書き込ませるのではなく、フラグメントが生成するものを後処理したい場合は、別のライターを渡すことができます。

+0

これは、ボディがまったくないタグ(タグ属性を読み取ることによってのみHTMLに変換される)にある場合、この呼び出しは効果がないということですか? – Sephy

+0

タグがボディを受け入れない場合、javadocを正しく読み込むと、フラグメントはnullになります。本文がありますが、文字は含まれていない場合、効果はありません。空白が含まれている場合は、空白がライターに書き込まれます。 –

+0

これは私のコードの中になぜ私がまだ持っていない場合でも、それは少し明確です。ありがとう! – Sephy

関連する問題