私の見解では、フラッシュ メッセージのセクションがあります。
<g:if test="${flash.message}">
<section id="flashTile">
<div class="alert fade in">
<a class="close" data-dismiss="alert" href="#">×</a>
<p>${flash.message}</p>
</div>
</section>
</g:if>
ビューのある時点で、コントローラーでアクションを呼び出します。
<g:form action="doAction">
<g:submitButton class="ghbtn" name="doAction" />
</g:form>
コントローラーのアクションは次のようになります。
def doAction() {
try {
flash.message = 'Computing...'
webserviceService.compute()
flash.message = 'Computed'
redirect(action: "list")
return
} catch (Exception e2) {
flash.message = 'Could not compute'
redirect(action: "list")
return
}
}
doAction
ボタンをクリックしてwebserviceService.compute()
正常に実行されると、「Computed」メッセージが表示されます。エラーが発生すると、「計算できませんでした」というメッセージが表示されます。これはうまくいきます。
webserviceService.compute()
実行には数秒かかるため、システムがリクエストを受信して処理していることをユーザーに通知したいと思います。そうしないと、ユーザーは機能していない可能性があり、ボタンを再度クリックします。
doAction
別のフラッシュ メッセージ「Computing...」を追加しました。これは、Web サービスが実行されるまでクリックした直後に表示されるはずです。
ワークフローは次のようになります。
クリックdoAction
-> 「コンピューティング...」を表示
webserviceService.compute()
実行 -> 「計算中...」は「計算済み」または「計算できませんでした」に置き換えられます
ここでの唯一の問題は、'Computing...' が表示されないことです。これに関するヒントはありますか?
ヒントをありがとう。私は今、自分のフォームを次のように変更しました
<g:form action="calculate" onsubmit="return calculating()">
と
<script type="text/Javascript">
function calculating() {
alert("come here");
return true;
</script>
アラート行の代わりに、flash.message を変更したいのですが、これに関して役立つものは何も見つかりませんでした。誰かヒントをくれませんか?