2011-07-29 12 views
9

私のJSPから呼び出すことができるjstlタグロジックを使用してhtmlフラグメント(htmlテーブル)を出力できるようにする2つの属性を持つカスタムタグ用に(単なるテンプレート)書く方法を教えてください。JSTLカスタムタグ

これは、私がすべての例で見たようなJavaクラスを記述することなく行うことができます。

私が習得しようとしているのは、JSPの繰り返しJSTLロジックをカスタムタグに外部化し、タグで必要な動的値を属性を使用して実行時に渡すことです。

おかげで、代わりにタグのアプローチを取るの

答えて

26

開始!彼らは悪い習慣であり、ビジネスロジックがビューレイヤーに漏れてしまいます。

JSTLを使用してタグファイルを作成できます。それはかなりシンプルです。 Thisは良いスタート地点です。

例:

mytable.tag

<%@ attribute name="cell1" required="true" type="java.lang.String" description="Text to use in the first cell." %> 
<%@ attribute name="cell2" required="false" type="java.lang.String" description="Text to use in the second cell." %> 

<table> 
<tr> 
    <td id = "cell1">${cell1}</td> 
    <td id = "cell2">${cell2}</td> 
</tr> 
</table> 

タグが/WEB-INF/tagsであると仮定すると、あなたは、このようにそれを使用することができます:

<%@ taglib prefix="mystuff" tagdir="/WEB-INF/tags" %> 

<mystuff:mytable cell1="hello" cell2="world" /> 
-3

は、あなたがJSPを起動するには、セッション変数にあなたの状態の出力を置くことができ、その後、スクリプトレットを経由して他のすべての変数には、そのセッション変数を使用します。以下のような何か:

は、スクリプトレットを使用しないでくださいJSP

<% boolean doStuff = isMyConditionTrue ? true : false; 
    session.setAttribute("doStuff", doStuff); 
%> 

その他のJSP

<% if(session.getAttribute("doStuff") != null && (boolean)session.getAttribute("doStuff")) { 
%> 
    //do stuff 
<% } %> 
+1

を私のシナリオでI私のjstlの断片を再利用したい – van