ELは演算もできる
ELでは四則演算や比較ができます。これを利用したサンプルを紹介します。
条件によって表示の色を変更
たとえばマネージドビーンから人物の名前と年令を複数取得できるとします。こんなような感じです。
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>
実行すると次のようになります。
ELで表示非表示を切り替える
前の例と同じように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歳以上だけ表示されます。前の表示と比べてみてください。


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