JSP カスタム タグ ライブラリと JSP 2 タグ ファイルの背後にある考え方を説明できる人はいますか?
それらは同じことを行うための異なる方法ですか?
それらはどのように比較されますか? それらの長所と短所は何ですか。どちらが優れていますか?
私は3つ未満のタグファイルですが、JSTLのそのリード開発者は、彼らが本当にそう言ったのなら、クラックを吸っています。非常に重要な理由の1つとして、すべてのタグライブラリタグをタグファイルタグとして書き直すことはできません。タグファイルでは次のことができません。
EVAL_BODY_INCLUDEを返します。
つまり、タグファイルの本文コンテンツには次の3つのオプションしかありません。
空:内部コンテンツはありません。<someTag />
スクリプトレス: JSP内部コンテンツはありません。<someTag> <p> hello world </ p> </ someTag>は問題ありませんが、<someTag> <p> <%= helloWorld.toString()%> </ p> </ someTag>
タグに依存: JSP内部コンテンツを含めることはできますが、そのように処理されることはありません。代わりに、適切と思われる方法で解析/レンダリングする必要があります
ただし、古いスタイルのタグライブラリタグを使用すると、次のようにできます。<body-content> JSP </ body-content>(tldファイル内)次に「returnEVAL_BODY_INCLUDE;」「doStartTag」から。これを行うと、すべてのJSPディレクティブは、ページの通常の部分であるかのように解析され、タグはそれらを適切なコンテンツでラップするだけです。
個人的には、私の親指のルールは次のとおりです。できる限りタグファイルを使用します。タグ内で動作するJSPディレクティブが必要ない場合は常に、JSPディレクティブは100万倍クリーンであり、プログラマー以外の人にとっても操作が簡単であるため、tldは必要ありません(別の名前空間に保持している場合はタグライブラリタグ)。
ただし、タグ内にJSPコンテンツが必要な場合、唯一のオプションはタグライブラリタグです。いつの日か、JSPの人々がタグファイルタグ内でJSPディレクティブ処理を行う方法をリリースし、古いクラスベースのタグを実際に放棄できるようになることを願っていますが、それまでは、タグファイルを使用してすべてのタグを実行しようとしないでください。 、ロジックの最後の部分ごとにカスタムタグを作成することにすぐになります(これが、JSPディレクティブを使用せずにロジックを実行する唯一の方法であるため)。
カスタムタグの開発に関する問題
従来のカスタム タグには、Java プログラミング スキルが必要です。
最も単純なカスタム タグを除いて、すべてを記述するのは簡単ではありません。
サーブレットとは対照的に、JSP の目的は、マークアップ言語を使用して、動的コンテンツが埋め込まれたレイアウトを管理することです。
マークアップ言語に重点を置いたカスタム タグで複雑な Java コードを記述しなければならないことは、過去にさかのぼります。
新しいカスタム タグを実装するときに、JSP 式言語またはその他のカスタム タグを使用したい場合があります。
ソリューション JSP 2.0 タグ ファイル
タグファイルの違いは?
JSP 構文を使用して記述されています。
.tagまたは.tagxサフィックスで識別されます。
機能を失うことなく、カスタム タグの開発者が簡単に開発できるようにすることを目的としています。