JSF2.2入門 第12回ELで演算式


kanban12

katatsumuriELは演算もできる

ELでは四則演算や比較ができます。これを利用したサンプルを紹介します。

leaf条件によって表示の色を変更

たとえばマネージドビーンから人物の名前と年令を複数取得できるとします。こんなような感じです。

public class PersonsBean implements Serializable{
String[][] persons={{“宮沢 賢治”,”18″},{“樋口 一葉”,”20″},{“夏目 漱石”,”23″},{“太宰 治”,”30″},{“紀 貫之”,”18″},{“鴨 長明”,”17″},{“芥川 龍之介”,”25″}};
public PersonsBean() {
}
public String[][] getPersons() {
return persons;
}
・・・

JSFページでは次のようにc:forEachで一覧表示しますが、ここで20歳以上は赤い文字で表示することにしました。2つとも同じことをやっていますが上は名前、下は年令を表示しています。年令のデータはStringですがELでは数字として問題なく処理できています。

<h:panelGrid columns=”2″>
<c:forEach var=”item” items=”#{personsBean.persons}”>
<h:outputText value=”#{item[0]}” styleClass=”#{item[1] >=20 ? ‘red’ : ‘black’}”/>
<h:outputText value=”#{item[1]}” styleClass=”#{item[1] >=20 ? ‘red’ : ‘black’}”/>
</c:forEach>
</h:panelGrid>

これに対応したスタイルシートも用意しておかないといけません。次のように。

<style>
.red{
color: #ff0000;
}
.black{
color: #000000;
}
td{
padding: 10px;
background-color: #eeeeee;
}
</style>

実行すると次のようになります。

el2-1

leafELで表示非表示を切り替える

前の例と同じようにc:forEachで全部のデータを読み込むのですが、20歳以上の人だけを表示するようにしてみます。

renderedプロパティの中でELで条件式を作っておいて、その結果がtrueになったときだけ表示するようにします。renderedはtrueかfalseで表示と非表示を切り替えられます。

<c:forEach var=”item” items=”#{personsBean.persons}”>
<h:outputText value=”#{item[0]}” rendered=”#{item[1] >=20}”/>
<h:outputText value=”#{item[1]}” rendered=”#{item[1] >=20}”/>
</c:forEach>

実行すると20歳以上だけ表示されます。前の表示と比べてみてください。

el2-2

 

previousnext

JSF2.2のすべてをまとめたkindle電子書籍 「JavaServer Faces2.2 入門」もぜひご覧ください。パソコン、iPhone、Androidどんな端末用にもamazonが無料のKindle電子書籍リーダーを用意しています。それをつかってKindle本を手軽にお楽しみください。あなたが今お使いの端末用Kidle電子書籍リーダーのご案内

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA