昨日、Oracleで行われた「今から始めるJava EE 7解説セミナー」に参加してきました。
そこで@den2snさんからJSF2.2とCDI1.1、EL3.0に関する話がありました。
ご自身ブログで感想を書かれていました~。
今から始めるJava EE 7解説セミナーでJSFの話ししてきた
http://den2sn.hatenablog.com/entry/2013/08/23/013632
セミナーの中で、EL3.0は独立した言語のような感じになってきている、と話されていて、確かに…(^^;と
ELで処理ロジックが書けてしまうと、JSFのビューにロジックが入り込んで…ねぇ、と。
が、知識として知っておいて損はないのと、場面を見極めて使い分ければそれなりに強力なのかな?とも思ったりします。
というわけで、NetBeans7.3.1を使って昨日のセミナーでキーワードとして紹介があったものを実際にコードで遊んでみました。文言は@den2snさんの発表資料そのままなんですが…資料の公開に期待(^^;
ひな形は以下の形で、outputLabel置いて遊んでみます。
<?xml version='1.0' encoding='UTF-8' ?>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html">
<h:head>
<title>ELで遊んでみる</title>
</h:head>
<h:body>
</h:body>
</html>
アサインメントオペレータ
「=」で値の代入ができる
<h:outputLabel value="#{x = 10}" />
セミコロンオペレータ
「;」で複数処理の記述ができる
<h:outputLabel value="#{x = 10; y = 10; x + y}" />
文字列連結オペレータ
「+=」で文字連結ができる
<h:outputLabel value="#{x='xxx'; y='yyy'; x+=y}" />
上記の例ではバッキングビーン(管理対象Bean)を定義せずに書いてますが、実際に使うシチュエーションの多くはバッキングビーンで定義してバインドされた値を使っての記述となると思います。
この辺りは絶対便利ですね!
スタティックフィールド・メソッド参照
NetBeans7.3で確認したら(やっぱり)見えなかったですw
コレクションオペレーション
<h:outputLabel value="#{[1,2,3,4,5,6].stream()
.filter(i->i%2 == 0)
.map(i->i*10)
.toList()}" />
この辺から気持ち悪いくなってくる…のかな(^^;
ちなみにNetBeans7.3.1、ちゃんとコード補完もしてくれたwさすが
Lambda式
<h:outputLabel value="#{fact = n->n==0 ? 1 : n * fact(n-1); fact(5)}" />
Java 8じゃないですが普通に(^^;
自前でEnum作ったけど思うよう動か…なかった。。。何か記述ミスしたかなぁ。