忍者ブログ
[238] [237] [236] [235] [234] [233] [232] [231] [230] [229] [228]

DATE : 2017/09/20 (Wed)
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


DATE : 2006/12/24 (Sun)

例えば、次のような入力必須のフォームがあったとします。

<h:form>
 <h:inputText required="true" />

 <h:commandButton value="戻る" action="prev" />
 <h:commandButton value="次へ" action="next" />
</h:form>

「戻る」ボタンを押したときには前のページに戻ります。しかし、上のコードではテキストフィールドに何か入力されていないと戻ることができません。

このような入力必須のフォームから入力なしに抜ける方法には、以下の方法があります。

  • 「戻る」ボタンを別のフォームにする。
  • 「戻る」ボタンの h:commandButton の immediate 属性を true にする。

「戻る」ボタンを別のフォームにする

「戻る」ボタンを別のフォームにします。このようにすると、「戻る」ボタンのあるフォームは入力が必須のフォームではないので、前のページに戻ることができます。

ただし、ページのレイアウトによっては「戻る」ボタンの位置をスタイルシートで調節する必要が出てきます。

「戻る」ボタンの h:commandButton の immediate 属性を true にする

次のように、「戻る」ボタンの immediate 属性を true に設定します。

<h:commandButton value="戻る" immediate="true" action="prev" />

初めに示したコードでは、「The Life Cycle of a JavaServer Faces Page」の図で示されている段階を全て経た上で次の(もしくは前の)ページへ遷移します。この中には「検証処理(Process Validations)」という段階があり、ここで入力がされているかどうかのチェック行われます。

しかし h:commandButton に immediate 属性を付けると、「検証処理」の前にページを遷移させることができます(正確には action 属性で指定したアクションを実行することになります)。具体的には「リクエストの適用(Apply Request)」段階でアクションを処理できます。

図を見ると、「リクエストの適用」の次にある「イベント処理(Process Events)」から最後の「レスポンスの構築(Render Response)」段階に矢印が延びていることがわかります。

参考文献

PR
●この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード
●この記事へのトラックバック
この記事にトラックバックする:
忍者ブログ [PR]
ブログ内検索
最近の状況
リンク
カレンダー
08 2017/09 10
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
使用許諾
最新コメント
(08/15)
(05/04)
(03/06)
(03/04)
(09/25)
最新トラックバック
T/O
(11/05)
ブログ内検索
最近の状況
リンク
カレンダー
08 2017/09 10
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
使用許諾
最新コメント
(08/15)
(05/04)
(03/06)
(03/04)
(09/25)
最新トラックバック
T/O
(11/05)