displaytagダイナミックカラム実装
12411 ワード
<!--
.important {
color: red;
font-weight: bold;
}
-->
このダイナミックカラムの実装方法はdisplaytag-examples-1.2から来ている.warが提供する例では、実際にダウンロードしたzipファイルにはjarパッケージだけでなく、この様々な例を含むwarパッケージもあり、displaytagを学ぶのに非常に良い資料です.
完全なコードを提供:
View Code
全体の論理は非常に簡単で、以下は私の分析です.
(1)まず例全体が非常に簡単であるため,データ層,制御層,表示層を1つのjspファイルに配置し,ファイルにも実際にはそうすべきではないと述べた.
(2)動的列とは何かを考えてみましょう.まず同じjspページ(異なるjspページであれば、直接静的であれば異なる表示効果が得られる)、異なる場合(一般的には異なる人によって異なる権限を有し、額これは私が推測した)に得られる表示結果は異なる(得られた結果は異なる列を有するが、そのbeanデータは同じであり、beanの異なる属性を表示するだけである)
(3)通常の動作は、 に表示するbeanプロパティ、すなわちカラム名がいくつか含まれることです.の構造は非常に似ていることを発見し,を用いて所望のを循環出力すればよい.
(4)動的列の効果を達成するには,が遍歴する集合を制御し,上記のコードを解析し,その集合が1つのSetであり,その要素が1つのMap要素であることを知ることが重要である.各Map要素はbean属性、すなわち列に対応します.このMap要素は、の属性である複数の名前値ペアから構成されています.
(5)残りはページ上のボタンをクリックし,異なるパラメータを渡し,セットにどの列が含まれているかをバックグラウンドで制御する.もう1つ注意しなければならないのは、表示するときに、Setセットを巡るとき、の属性はすべて書かなければならないことです.それはすべてのMap要素が含む可能性のあるすべての属性を含むべきで、すべてのMap要素が同じ属性を含むわけではありません.
(6)原理全体を理解した後,この動的列を適用する際に最も重要なのは,いったいいつどの列を表示するのか,他の場合は別の列を表示するのかという制御層の実現であり,これは非常に変化しやすい需要点であり,突然増加する場合であるため,拡張しやすいようにしなければならない.XMLファイル、またはデータベース保存を考慮できます.
.important {
color: red;
font-weight: bold;
}
-->
このダイナミックカラムの実装方法はdisplaytag-examples-1.2から来ている.warが提供する例では、実際にダウンロードしたzipファイルにはjarパッケージだけでなく、この様々な例を含むwarパッケージもあり、displaytagを学ぶのに非常に良い資料です.
完全なコードを提供:
<jsp:root version="1.2" xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:display="urn:jsptld:http://displaytag.sf.net/el"
xmlns:c="urn:jsptld:http://java.sun.com/jstl/core">
<jsp:directive.page contentType="text/html; charset=UTF-8" />
<jsp:directive.page import="org.displaytag.sample.*" />
<jsp:include page="inc/header.jsp" flush="true" />
<jsp:scriptlet>
// available column sets should be managed in the backend, not in the jsp page.
// you just need to build a list with Maps containing standard column attributes
java.util.Map email = new java.util.HashMap();
email.put("property", "email");
email.put("title", "email title");
java.util.Map date = new java.util.HashMap();
date.put("property", "date");
date.put("title", "date");
date.put("sortable", Boolean.TRUE);
java.util.Map money = new java.util.HashMap();
money.put("property", "money");
money.put("title", "money");
money.put("format", "{0,number,000.00 €}");
java.util.List set1 = new java.util.ArrayList();
java.util.List set2 = new java.util.ArrayList();
java.util.List set3 = new java.util.ArrayList();
set1.add(email);
set1.add(date);
set1.add(money);
set2.add(money);
set2.add(email);
set3.add(date);
set3.add(date);
// this is the logic for choosing a column set
// should be done in a controller/viewer helper, not in the jsp
String choose = request.getParameter("set");
if ("3".equals(choose))
{
request.setAttribute("collist", set3);
}
else if ("2".equals(choose))
{
request.setAttribute("collist", set2);
}
else
{
request.setAttribute("collist", set1);
}
// just prepare the usual list
request.setAttribute( "test", new TestList(10, false) );
</jsp:scriptlet>
<h2>Using predefined column lists</h2>
<p>This example shows how a predefined set of columns can be applied to a table.</p>
<p>All you have to do is feeding the table with a list of beans/Maps which contains the needed column attributes and
create the needed <code><![CDATA[<display:column>]]></code> tags and use a simple iteration directly in the jsp</p>
<p>In this page we create three different set of colums, implemented as Lists of Maps, directly in the jsp. Obviously,
you will probably want to configure them in a db, xml file, or any other source for a real use (Spring xml files could
be an easy and flexible solution). No dipendence on displaytag-specific classes is required in your application, since
you can simply use a plain Map or implement a custom bean.</p>
<p>Click on a column set below to see it applied to the table.</p>
<br />
<br />
<ul id="stylelist">
<li><a href="example-columnlist.jsp?set=1">column set 1</a></li>
<li><a href="example-columnlist.jsp?set=2">column set 2</a></li>
<li><a href="example-columnlist.jsp?set=3">column set 3</a></li>
</ul>
<br />
<br />
<display:table name="test">
<c:forEach var="cl" items="${collist}">
<display:column property="${cl.property}" title="${cl.title}" sortable="${cl.sortable}" format="${cl.format}" />
</c:forEach>
</display:table>
<jsp:include page="inc/footer.jsp" flush="true" />
</jsp:root>
View Code
全体の論理は非常に簡単で、以下は私の分析です.
(1)まず例全体が非常に簡単であるため,データ層,制御層,表示層を1つのjspファイルに配置し,ファイルにも実際にはそうすべきではないと述べた.
(2)動的列とは何かを考えてみましょう.まず同じjspページ(異なるjspページであれば、直接静的であれば異なる表示効果が得られる)、異なる場合(一般的には異なる人によって異なる権限を有し、額これは私が推測した)に得られる表示結果は異なる(得られた結果は異なる列を有するが、そのbeanデータは同じであり、beanの異なる属性を表示するだけである)
(3)通常の動作は、
(4)動的列の効果を達成するには,
(5)残りはページ上のボタンをクリックし,異なるパラメータを渡し,セットにどの列が含まれているかをバックグラウンドで制御する.もう1つ注意しなければならないのは、表示するときに、Setセットを巡るとき、
(6)原理全体を理解した後,この動的列を適用する際に最も重要なのは,いったいいつどの列を表示するのか,他の場合は別の列を表示するのかという制御層の実現であり,これは非常に変化しやすい需要点であり,突然増加する場合であるため,拡張しやすいようにしなければならない.XMLファイル、またはデータベース保存を考慮できます.