Piece Frameworkを使ったEZWeb向けWebサイトの遷移制御

Piece Framework を利用してフローを制御した携帯端末向けアプリケーションを組む際、以下のような問題提起がありました。

EZweb端末の強制的なブラウザキャッシュに適切に対処する

要はフローを制御したアプリケーションに対し「戻る」ボタンによる遷移が行われると、ユーザが閲覧しているページと実際に留まっているフローの状態との不一致が発生することになり、リクエストによる正しい再読み込みを行わない限り同期しないことになります。

で、WML を利用したボタンの制御について、そこまで厳密に制御したことがなかったので良く分からなかったのですが、実際のところ思ったより簡単でした。

以下サンプルを。

ソースは本体同梱の Registration フローより。プログラム部分や設定ファイルはそのまま使用し、テンプレートのみを変更して実験しました。とはいっても、EZWeb端末向けに若干の変更を行ったことと、ボタン制御のための WML を追加しただけです。

Layout.html

<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN"
"http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">
<html>
<head>
  <title>Piece_Unity Examples</title>
</head>

<body>
  <h1>Registration Application Example for EZWeb</h1>
  {__content:h}
</body>
</html> 

Form.html

<form name="Form" id="Form">
  <input type="hidden" name="{__flowExecutionTicketKey}" value="{__flowExecutionTicket}" id="flowExecutionTicket" />
  <input type="hidden" name="{__sessionName}" value="{__sessionID}" />

  <p class="error" flexy:if="__RegistrationResults.isError(#firstName#)">{__RegistrationResults.getErrorMessage(#firstName#)}</p>
  <p>
    First Name: <input type="text" name="firstName" id="firstName" />
  </p>
  <p class="error" flexy:if="__RegistrationResults.isError(#lastName#)">{__RegistrationResults.getErrorMessage(#lastName#)}</p>
  <p>
    Last Name: <input type="text" name="lastName" id="lastName" />
  </p>
  <p>
    <input type="submit" name="{__eventNameKey}_confirmForm" value="confirm" />
  </p>
</form>

<wml:do type="prev">
  <noop />
</wml:do>

Confirmation.html

<p>First Name: {user.firstName}</p>
<p>Last Name: {user.lastName}</p>
<form name="Confirmation">
  <input type="hidden" name="{__flowExecutionTicketKey}" value="{__flowExecutionTicket}" />
  <input type="hidden" name="{__sessionName}" value="{__sessionID}" />
  <p>
    <input type="submit" name="{__eventNameKey}_goDisplayFormFromDisplayConfirmation" value="reedit" />
    <input type="submit" name="{__eventNameKey}_register" value="register" />
  </p>
</form>

<wml:do type="prev">
  <go href="{__scriptName}?{__eventNameKey}_goDisplayFormFromDisplayConfirmation&{__flowExecutionTicketKey}={__flowExecutionTicket}&{__sessionName}={__sessionID}"/>
</wml:do>

Finish.html

<h2>Registration finished!</h2>
<p><a href="{__scriptName}">Restart Registration.</a></p>

<wml:do type="accept" lavel="Start">
  <go href="{__scriptName}"/>
</wml:do>
<wml:do type="prev">
  <noop />
</wml:do>

Piece_Unity Examples: Registration Application Example for EZWeb
http://hatotech.org/examples/piece/ezweb-registration.php

PCでも閲覧できますが、動作は EZWeb 端末に転送してご確認ください。

「戻る」ボタンの無効化だけでなく、ボタン押下によるイベント発生と状態遷移も問題ありません。これで当初の話のような閲覧と状態の不一致が発生しないはず。ただし操作感を損なう可能性もありますので要注意。どの機能面を取るかバランスを考え適切な選択と対処をしましょう。

トラックバック(0)

このブログ記事を参照しているブログ一覧: Piece Frameworkを使ったEZWeb向けWebサイトの遷移制御

このブログ記事に対するトラックバックURL: http://hatotech.org/mt-admin/mt-tb.cgi/671

コメントする

このブログ記事について

このページは、が2007年6月 1日 15:07に書いたブログ記事です。

ひとつ前のブログ記事は「マグロ」です。

次のブログ記事は「Koyaanisqatsy」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 4.01