Challenge Java EE !

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

Faces Flowでリダイレクトできない…

JSF

2015/2/14 追記
本件、odaさんが解決してくださいました(^^)!!!ありがとうございます!

Faces Flow でリダイレクトしてみる - お だ のスペース

Faces Flowでは、画面遷移の際にaction="hoge.xhtml"と指定するのではなく、action="hogeId"のようにView Node ID(でいいのかな?)を利用するみたいです。

簡単なFaces Flowサンプルはこちら↓


kikutaro/SimpleFlow · GitHub

で、通常JSFでは、画面遷移した際にURLを遷移先ページへ変えるには、リダイレクトする必要があります。定義はaction="hoge.xhtml?faces-redirect=true"という形。

じゃあFaces Flowの際にはaction="hogeId?faces-redirect=true"みたいに書くの?と試したけど、予想通り駄目でした(^^;

どうやらFlowを定義するところで

flowBuilder.navigationCase().fromOutcome(firstFlowId)
               .toViewId("/secondFlow.xhtml").redirect();

のようにredirect()というのがあるようです。

が、色々やっても動かない…。

FlowBuilderの設定では

  • definingDocumentId
  • viewNodeId
  • viewId
  • flowDocumentId
  • vdlDocumentId

などの言葉が入り乱れていて、なんとも…。この辺、一度整理したい。

なお、同じようにFaces Flowでredirectを試みている方々をみつけたのですが…動いたぜ!っていう回答がない…。


jsf 2.2 - How to enter a JSF 2.2 flow with faces-redirect - Stack Overflow


Returning from a JSF flow with faces-redirect | Oracle Community


JSF 2.2 Navigating to a flow using a navigation... | Oracle Community

まぁ、今回の場合はリダイレクトしなくてもいいので何とかなるのだけど、何が悪いのか全然わかりませんでした(^^;上のStackOverflowに良い回答が来るの待ち…。

Faces Flowで即時にフローを開始したい

今かかわっている案件、画面数は少ないのですが、業務的には画面間を行き来することが多いような画面となっています(なら画面分けるのやめてSPAに、というのは置いておいて…)

開発はJava EE 7でJSFを使うのですが、ViewScopeだとちょっと微妙で、候補としてはSessionScope、ConversationScope、そしてJSF 2.2で入ったFlowScopeのいずれかかなと。

Conversationはあまり良い思い出がないので、FlowScopeことFaces Flowを初めて実戦投入してみようかな…と思っています。

Faces Flowについては2年前のJava EE Advent Calendar 2013で書いてました。

で、今回のシステムは、他のベンダさんが提供してるWebシステムから呼びされるもので、呼び出された瞬間にフローを開始したいです(下図)。

f:id:kikutaro777:20150209225201j:plain

スタブのページ用意して、URLリンクで普通にフローを呼び出してみたのですが、フローの開始にはなりませんでした。

色々なサンプルをみたのですが、ほとんどがindex.xhtmlのようなページがあって、そこからoutcome属性でフローに入って…という流れのものばかり…。

悩みで近いのは次の2つでした。


jsf 2.2 - How to enter a JSF 2.2 flow with faces-redirect - Stack Overflow


jsf 2 - Starting faces flow - Stack Overflow

2つ目のコードをみると、ConfigurableNavigationHandlerのperformNavigation()にてoutcomeと同じハンドリングができるようなので、1枚ダミーのページをはさんでリダイレクトする形に……(下図)。

f:id:kikutaro777:20150209231417j:plain

これでフロー開始ができました。が、なんかダサい…。良いやり方ないのかな。

はじめてのOpenShift Online

ちょっとしたWebプロトアプリを一時的に公開したい場合、やはりPaaSが便利です。

Java EEを前提とした場合ですが、前まではGlassFish/WildFlyが超お手軽に使えるCloudbeesいいねね!という感じでした。


CloudBeesのPaaSでJava EEアプリをクラウドへ簡単に展開! - Challenge Java EE !

でも残念ながらPaaS提供がなくなってしまい…(^^;ホント残念…。

そうなるとAWSのBeanstalkかなぁ、と去年のGlassFish Advent Calendarで以下書きました。


AWS Elastic BeanstalkでJava 8 & GlassFish 4.1! - Challenge Java EE !

Cloudbeesはクレジットカード情報などの登録なしで使えたので、そういう手軽なものが他にないかなーと探してたら、OpenShiftを知りました(^^;名前は薄々聞いたことあったのですが…。


OpenShift by Red Hat

で、OpenShift OnlineなるものがRed Hatから提供されているとのことで、ちょっと試してみました。

ちょっとポチポチして進むだけで、WildFlyの環境ができて手軽っぽい(^^)今回はユーザ登録と1つのGear(OpenShiftではインスタンスをGearと表現するようです)を作ってみました。

OpenShiftのサイトへ

OpenShiftのサイトにアクセスして、ONLINEのSIGN UP FOR FREEを選びます。

f:id:kikutaro777:20150126204533j:plain

アカウント作成

メルアドとパスワードを入れてアカウントを作成します。

f:id:kikutaro777:20150126204653j:plain

完了すると以下画面となって、登録したメールアドレスにOpenShiftからメールが来ます。
メールにあるリンクをクリックして進みます。

f:id:kikutaro777:20150126204734j:plain

利用規約を許可します。

f:id:kikutaro777:20150126204900j:plain

登録はこれだけ(^^)

アプリケーション作成

で、早速アプリケーションの作成です。「Create your first application now」を選択しました。
f:id:kikutaro777:20150126205021j:plain

選べる環境がでてくるのですが、かなり豊富!

f:id:kikutaro777:20150126205122j:plain

f:id:kikutaro777:20150126205127j:plain

f:id:kikutaro777:20150126205518j:plain

Javaでは

  • JBoss Application Server 7
  • Tomcat 6 (JBoss EWS 1.0)
  • Tomcat 7 (JBoss EWS 2.0)
  • Vert.x 2.1
  • WildFly Application Server 8.2.0 Final
  • AeroGear Push 0.X
  • CapeDwarf

などが並んでいました(2015/1/26現在)

Java以外にもPHP,Ruby,Python,さらにNode.jsやPerl、Goなども。

今回はとりあえず、WildFly 8.2.0を選択しました。あとは、URL決めたりしてポチポチ進むだけです。

f:id:kikutaro777:20150126205703j:plain

Regionは、とりあえずaws-us-east-1を選択しました。

f:id:kikutaro777:20150126205813j:plain

コードを変更する?と聞かれましたが、とりあえずNot nowで進みました。

f:id:kikutaro777:20150126205848j:plain

完成

少し待ったら、できあがり(^^)はやい;

f:id:kikutaro777:20150126205912j:plain

デフォルトだと以下のようなページになってます。

f:id:kikutaro777:20150126210007j:plain

実際のはこちら
http://jbosswildfly-kikutarotest.rhcloud.com/

今後遊んでいくので、上記環境は変わりますが(^^;

Cloudbees同様に、かなりお手軽な感じです!GlassFishが選べないのはあれですが、まぁRed Hatですし(^^;;;

次回はこのコードを落として変更してみたいと思います。

にほんブログ村 IT技術ブログへ
にほんブログ村
にほんブログ村 IT技術ブログ Javaへ
にほんブログ村
QLOOKアクセス解析