2012-04-05 2 views
2

ボディがまったくないカスタムタグがあります。私は、タグを使用するJSPで表示される「[!SUCCESS]」生成されたJSTLを含むJavaカスタムタグ:解釈されない

[<c:out value="SUCCESS!"/>] 

目標は確認することです、簡単のため、プログラム的と空の体を交換しようとしているが、私が見るすべては[」です] "そして、生成されたソースコードを見ると、c:out文が括弧で囲まれたページに書き込まれていますが、解釈されていないことがわかります。

これを達成する一般的な方法はありますか?最終的な目標は、 "c:out"タグの代わりに他のカスタムタグを使用することです。タグ/コンテンツはデータベースから来ます。 SimpleTagSupportとBodyTagSupportで異なるテクニックを試しましたが、どれも成功していませんでした。実際には、それが技術的に可能かどうかはわかりません。タグはすでにその時点で解釈されています。しかし、どうすればいいでしょうか?

答えて

1

サーバータグ(カスタムタグまたはJSTLタグなど)は、the JSP is translated into a servletのときにJavaコードに変換されます。たとえば、次のJSPコード:

<c:out value="FooBar" /> 

は、サーブレット内でこのような何かに翻訳さ:カスタムタグで

.... 
OutTag outTag = (OutTag) tagHandlerPool.get(OutTag.class); 
outTag.setPageContext(pageContext); 
outTag.setParent(null); 
outTag.setValue(new String("FooBar")); 
int evalOut = outTag.doStartTag(); 
.... 

あなたは(他のJavaクラス/メソッドを呼び出すことができますし、HTMLコードを書くことができますJSPコードではない)を応答に追加します。

[<c:out value="SUCCESS!"/>]は、このレベルではレスポンスに直接書き込まれる文字列なので、解釈されません。

関連する問題