5やら6から逃れられない全国のエンプラ開発現場の方々お疲れ様です。6の場合、そんなもの使えないのである。Scopedで誤魔化すしか無いのである。Scopedは会話(Conversation)の開始・終了を明示的に行わないといけないので、結構めんどくさいということと、どうやれば綺麗に開始・終了できるのかイマイチ成功例がわからなかったのであるが、やっぱり避けられなくなったので改めて何パターンか試してみた。いうのが見つかったので、メモ代わりに紹介しておく。2.1でも実現できるかも知れない。2.2仕様で書いているが、2.1仕様であればjsfc=”h:inputText”とかで書き換える必要がある。※JSFの基本的な作り方については、先週発表のスライドにまとめてあるので、そっちば参照してはいよ。http://www.slideshare.net/iwasakihirofumi/java-ee-7-jsf-22とりあえず、ポイントは一体どこで会話をスタートさせるのか、だ。Viewで引っかけて強引に呼ぶ例をWebで見つけた。他にもGetterメソッドを作ってFaceletの先頭で表示させるついでに#{bean.property}で強引に呼び出す方法もあるが、こっちの方がスマートかも知れないし、タイミングは早いから安全ではある。f:eventを書くのめんどくさいけど。注意点としては、開始と終了の書き方はほとんど固定で、下記のように書くしかなさそう、という点だ。間違って2回conversation.start()が呼ばれると、前に格納されていた値は全消去されてしまうので、あくまで最初に1回だけ呼んでやる必要がある。ここを間違えると「?」な挙動になるので注意するべしである。1頁目の先頭でf:eventにて強制的に呼び出す。ポストバックでなくて、且つ、会話が開始されてなかったら開始する。1画面目でボタンが押された際のメソッド。書かなくても行けるけど念のため。2画面目でボタンが押された際のメソッド。書かなくても行けるけど念のため。3画面目でボタンが押された際のメソッド。会話を完了させて遷移する。会話が開始されてたら終了する。value="completed"/></form></h:body></html>[/html]実行結果1画面目。入力された値が表示されている。入力された値は生き残ってる。下のボタンを押すと会話が完了し値が消え、1画面目に戻る。Conversationが再度startされているので、値は消えて再度状態が開始されている(つまり空っぽ)。7が出てもそのまま持って行ける。7への移行の際には画面に影響があるのである。Lambda式をNetBeansでちょっとだけ試してみた昨日夜にあったJavaOne報告会福岡できしださんがJavaのLambdaをやたら詳しく説明してくれて頭がぐるぐるになってきた。8に対応したと聞いていたので、最新のを落として試してみた。Frameworkのlambda式対応拡張表現である。EEではforEachOrdered()を使いましょう。約束だよ!!}}[/java]NetBeansの補完機能で、上記の「Normal」の部分に対して提案が出ていて、ポチるとLambda式に変換してくれるようになりました。んーいいんかな・・・これがこうなるのだ。下と大体一緒なので、賢いと言えるだろう。0秒)[/java]さて、どうしても視点がEEになるのだが、これ実際に使えるかなぁ、というのが本音である。Sugarの否定のようにも見えて微妙なんだよなぁと思う次第である。C#のようにdelegate式が簡易に使えるわけでも無し。EEで使う所が果たしてあるのだろうか・・・と考えると、何となく微妙である。そもそも、匿名クラス表現をあんまり使わないというのもあるのだ。綺麗に書いた方がメンテナンス性は上だしね。「こんな複雑なコード書けた俺格好いい」系の自己中表現なんかは、エンタープライズ系開発では最も忌諱されるものなのである。Frameworkの処理位なのかなと思ったりする次第である。他にも何かあるのかな。8が出てJPA辺りが完全対応したら、また面白い世界が待っているのだろう。※桜庭さんに「順序守れるよ!」って教えてもらったので上のプログラムと一緒に修正しました。いや、それはいま流行の方向と文化が違うと思って貰った方が良いかなと。これはこれで楽しいよ!ところで、lambda式の中でアロー演算子(->)が使われてるのは微妙なのである。callと一緒じゃんと。これはC++11に合わせたんだろうけど、そこだけは良いかなと思う。思うけど、Javaのlambda表現の本家ぽいC++がそもそもそういう表現を取り入れているというのもどうかなぁと思う次第である。C++14で変わる事は無さそうだし、暫くこんな感じなのでしょう。2013報告会の2回目を福岡でやってます。技術編http://atnd.org/events/45326数日前に日本Oracle本社で喋らせて頂いたのですが、今年の5月、去年同じ場所で喋らせてもらった時と比較して考えても、現場の熱がだいぶ上がってきたなぁという感じがしています。EEが凄いですね、という話です。やってきた身としては、ああ、そうなんだ、という感じではあります。1.3が出た頃辺りかなと。要するに、これから盛り上がりますよー、という前兆が見える状況にようやく至ったと考えるわけです。いつもどっちかというと煽る側に立つ身としては、使えるものじゃないと煽ってもしょうがないよね、というのもあります。5は放置してきた経緯があります。6っていいよ、と言い続けてきた甲斐があったものというものです。EE仕様の部分部分の情報はある程度みなさん共有できているものの、こうやったら上手く作れる、という知見については、やはり日本語書籍がほぼゼロという状況もあり、これからという非常に悲しい状況ではあります。2.2について、NetBeansを使ってウルトラ超簡単な作り方のコツを1ステップずつやってみるものを作ってみました。Shareに掲載しようかと思ってますので、興味のある方は後ほどご覧下さいませ。Shareに上げました。6の座談会に出ることになった。福岡より飛行機で行きます。(受付終了)http://www.oracle.com/webapps/events/ns/EventsDetail.jsp?p_eventId=170343&src=7863984&src=7863984&Act=31この座談会のセミナーは既に受け付け終了してしまっているのだが、講演の様子は後日記事になるらしく、そこで參照していただければと。私も告知を知らなかったので案内出來ませんでしたことよ(×_×)ちなみに前回・前々回のものは既にWeb記事になっているので、そちらを参照して頂きたい。7ネタを入れたので前回と少し違う方向性になるのではと思う。思うだけなのでどうなるかは不明であるのだが、大筋はあまり変わらない予定である。7対応版がいよいよ来年より登場してくると考えている。手を付けても罰は当たらない(投資が無駄にならない)頃かなと思っているのだが、どうだろうか。大量なので一朝一夕に追いかけられないため、徐々にキャッチアップしていくのが賢い戦略であろう、と思う次第である。