読者です 読者をやめる 読者になる 読者になる

Challenge Java EE !

Java EEを中心に趣味や仕事における開発メモを書いています。

Expression Language 3.0で遊んでみる

Lambda Java EE 7 NetBeans EL式

昨日、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' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<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}" />

f:id:kikutaro777:20130823190807j:plain

セミコロンオペレータ

「;」で複数処理の記述ができる

<h:outputLabel value="#{x = 10; y = 10; x + y}" />

f:id:kikutaro777:20130823191309j:plain

文字列連結オペレータ

「+=」で文字連結ができる

<h:outputLabel value="#{x='xxx'; y='yyy'; x+=y}" />

f:id:kikutaro777:20130823191659j:plain

上記の例ではバッキングビーン(管理対象Bean)を定義せずに書いてますが、実際に使うシチュエーションの多くはバッキングビーンで定義してバインドされた値を使っての記述となると思います。

この辺りは絶対便利ですね!

スタティックフィールド・メソッド参照

f:id:kikutaro777:20130823200649j:plain

NetBeans7.3で確認したら(やっぱり)見えなかったですw

コレクションオペレーション
<h:outputLabel value="#{[1,2,3,4,5,6].stream()
                                .filter(i->i%2 == 0)
                                .map(i->i*10)
                                .toList()}" />

この辺から気持ち悪いくなってくる…のかな(^^;

f:id:kikutaro777:20130823201046j:plain

ちなみにNetBeans7.3.1、ちゃんとコード補完もしてくれたwさすが

f:id:kikutaro777:20130823200901j:plain

Lambda式
<h:outputLabel value="#{fact = n->n==0 ? 1 : n * fact(n-1); fact(5)}" />

f:id:kikutaro777:20130823201232j:plain

Java 8じゃないですが普通に(^^;

Enum参照

自前でEnum作ったけど思うよう動か…なかった。。。何か記述ミスしたかなぁ。

にほんブログ村 IT技術ブログへ
にほんブログ村
にほんブログ村 IT技術ブログ Javaへ
にほんブログ村