- PR -

JSF Submitしないでページ遷移するには?

1
投稿者投稿内容
cutback
会議室デビュー日: 2003/05/16
投稿数: 12
投稿日時: 2004-12-22 17:23
JSFを勉強しています。
・JSF1.1

commadButton、commandLinkで画面遷移した場合、Submitされて画面入力内容がBeanに反映されます。
通常はこれでOKなのですが、「戻る」の場合は入力内容を反映させたくありません。

commandButtonのtype属性を"button"にしてみたところ、Submitされなくなりましたが画面遷移もしなくなりました^^;
#action属性が無視されている?

--JSP
<h:commandButton action="back" value="ok" />
<h:commandButton action="back" type="button" value="cancel" />

--faces-config.xml
<navigation-rule>
<description>内容編集</description>
<from-view-id>/item.jsp</from-view-id>
<navigation-case>
<description>戻る</description>
<from-outcome>back</from-outcome>
<to-view-id>/article.jsp</to-view-id>
</navigation-case>
</navigation-rule>


画面遷移はナビゲーション定義で統一したいと思っています。
どのようにすればよいのでしょうか?
よしだひろゆき
大ベテラン
会議室デビュー日: 2004/11/22
投稿数: 141
投稿日時: 2004-12-24 10:18
JSFはサーバ側のフレームワークですから,
「Submitしない」と「画面遷移はナビゲーション定義で統一したい」は両立しません.

ボタンにimmediate="true"を指定して,対応するactionの中で,FacesContextのrenderResponseを呼べばいいはずです.

public String backAction() {
 FacesContext.getCurrentInstance().renderResponse();
return "back";
}
という感じかな.
よしだひろゆき
大ベテラン
会議室デビュー日: 2004/11/22
投稿数: 141
投稿日時: 2004-12-24 10:35
訂正します.renderResponseは自動的に呼んでくれているようですので,ボタンを以下のように指定するだけですね.

<h:commandButton value="戻る" action="back" immediate="true"/>
cutback
会議室デビュー日: 2003/05/16
投稿数: 12
投稿日時: 2004-12-24 11:14
返答ありがとうございます。

commandButton、commandLinkともに、immediate="true"を指定することで画面入力内容をBeanに反映せずにナビゲーション定義に従って画面遷移できることを確認しました。

ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)