Piece Frameworkを使ったEZWeb向けWebサイトの遷移制御
Piece Framework を利用してフローを制御した携帯端末向けアプリケーションを組む際、以下のような問題提起がありました。
要はフローを制御したアプリケーションに対し「戻る」ボタンによる遷移が行われると、ユーザが閲覧しているページと実際に留まっているフローの状態との不一致が発生することになり、リクエストによる正しい再読み込みを行わない限り同期しないことになります。
で、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

コメントする