質問
JSPカスタムタグライブラリとJSP 2タグファイルの背後にあるアイデアを誰でも説明できますか?
それらは同じことをするための異なる方法ですか?
それらはどのように比較されますか?彼らの長所と短所は何ですか、どちらが良いですか?
解決
I <!> lt; 3個のタグファイルがありますが、JSTLの主任開発者は、本当にそう言っているとすれば、ひび割れています。 1つの非常に重要な理由により、すべてのタグライブラリタグをタグファイルタグとして書き換えることはできません。タグファイルができないことです。
return EVAL_BODY_INCLUDE;
つまり、タグファイルには、ボディコンテンツのオプションが3つしかありません。
空:内部コンテンツはありません。 <!> lt; someTag / <!> gt;
スクリプトレス: JSP内部コンテンツなし。 <!> lt; someTag <!> gt; <!> lt; p <!> gt; hello world <!> lt; / p <!> gt; <!> lt; / someTag <!> gt; <!> lt; someTag <!> gt; <!> lt; p <!> gt; <!> lt;%= helloWorld.toString()%<!> gt; <!> lt; / p <!> gt; <!> lt; / someTag <!> gt;
タグに依存: JSPの内部コンテンツを使用できますが、処理されません。代わりに、あなたはそれを解析/レンダリングしなければなりません
ただし、古いスタイルのタグライブラリタグを使用すると、次のことができます。 <!> lt; body-content <!> gt; JSP <!> lt; / body-content <!> gt; (tldファイル内)、次に<!> quot; return EVAL_BODY_INCLUDE; <!> quot; <!> quot; doStartTag <!> quot;から。これを行うと、すべてのJSPディレクティブはページの通常の部分であるかのように解析され、タグは適切なコンテンツで単純にラップします。
個人的には、私の経験則では、できる限りタグファイルを使用します。タグ内で動作するJSPディレクティブが不要なときはいつでも、それらは100万倍クリーンであり、プログラマー以外の人が操作しやすいため、TLDは必要ありません(まあ、別の名前空間に保存する場合は)タグライブラリタグ)。
ただし、タグ内にJSPコンテンツが必要な場合、唯一のオプションはタグライブラリタグです。いつか、JSPの人々がタグファイルタグ内でJSPディレクティブ処理を行う方法をリリースし、古いクラスベースのタグを実際に放棄できることを願っていますが、それまではタグファイルですべてのタグを実行しないでください。 、ロジックの最後の部分ごとにカスタムタグを作成することにすぐに減るので(これがJSPディレクティブを使用せずにロジックを実行する唯一の方法であるため)。
他のヒント
カスタムタグの開発に関する問題
従来のカスタムタグにはJavaプログラミングが必要です スキル。
最も単純なカスタムタグ以外のすべての記述は簡単ではありません。
JSPの目的は、サーブレットとは異なり、使用することです 埋め込みを使用してレイアウトを管理するマークアップ言語 動的コンテンツ。
複雑なJavaコードを書く必要がある マークアップ言語に焦点を合わせたカスタムタグで 後方。
JSP式言語を使用するか、 新しいカスタムを実装するときの他のカスタムタグ タグ。
ソリューション JSP 2.0タグファイル
- タグファイルは、JSP 2.0で導入された重要な新しい概念の1つです。
- タグファイルを使用すると、カスタムタグをより簡単かつ迅速に開発できます。
- タグファイルは、スクリプト要素を含む通常のJSP構文を使用して開発され、他のカスタムタグと同様に使用されます。
- 各カスタムタグは個別のタグファイルです。
タグファイルの相違点
JSP構文を使用して作成。
- すべてのJSPディレクティブがタグファイルで許可されているわけではありません。
- 新しいタグファイル固有のディレクティブ、アクション、および暗黙オブジェクトによってサポートされています。
.tag または .tagx サフィックスのいずれかで識別されます。
カスタムタグの開発者に機能を損なうことなく開発を容易にするためのもの。
- JSTLの主な開発者の1人は、時間があれば、タグファイルを使用してすべてのJSTLを書き換えるとコメントしました。