Faces Flow でリダイレクトしてみる

元ネタ:Faces Flowでリダイレクトできない… - Challenge Java EE !

動きをみると、リダイレクト というより navigationCase が上手く効いてない感じでした。
とりあえず色々試して動かしてみました。

ちなみにこれで何で動くのかまでは調べてません。
FlowDef.java

@Produces
@FlowDefinition
public Flow defineFlow(@FlowBuilderParameter FlowBuilder flowBuilder){
  flowBuilder.initializer("#{flowBean.init()}");
  flowBuilder.id("", firstFlowId);
  flowBuilder.viewNode(firstFlowId, "/firstFlow.xhtml").markAsStartNode();

  flowBuilder.navigationCase()
    .fromViewId("/firstFlow.xhtml")
    .fromAction(secondFlowId)
    .toViewId("/secondFlow.xhtml")
    .redirect();
  return flowBuilder.getFlow();
}
元の動き

修正後の動き


1個目のレスポンスヘッダー

302 返って、もいっかい POST で取りにいってるしリダイレクト出来てるはず。

flowBuilder.viewNode(secondFlowId, "/secondFlow.xhtml");

はあっても無くても動きましたが、あった方が行儀良いのかな?

navigationCase()
  .fromViewId
  .fromAction
  .toViewId

は全部指定しないとダメでした。

FacesFlow は面白いのですが、自分で試したところ

  • Flow の開始画面が1個だけ
  • Flow を抜けるケースを全て指定しないとダメ

等があり、ちょっと使いにくいなという感じ。

もうちょっと情報が出回ると良いなー。