1

だからここに私が取得しようとしている望ましい動作があります:

  1. ユーザーがパスワード変更 Web ページに移動します。
  2. ユーザーがフォームに入力し、フォームを REST サーバーに PUT します。
  3. PUT が成功すると、ユーザーは「パスワードが正常に変更されました」というメッセージとともに「マイ アカウント」ページにリダイレクトされます。
  4. 「マイ アカウント」ページを更新すると、パスワード メッセージは表示されなくなります。(つまり、これは 1 回限りのメッセージです。)

私が試した解決策は次のとおりです(失敗しました):

1) JQuery を使用して、AJAX PUT を REST サーバーに実行します。これは PUT に対しては正常に機能しますが、リダイレクトは onSuccess JavaScript 内にある必要があり、URL でメッセージをマイ アカウント ページに渡すと、そのメッセージは更新後に残ります。

2) 従来のフォームを使用する。ただし、これは PUT を実行しません (メソッドは put、on post、および get をサポートしていません)。POST を実行することはできますが、新しいレコードを作成するのではなく、ユーザー アカウント レコードを更新しているため、REST の観点からは「間違っています」。リダイレクトとワンタイム メッセージはすべて、このソリューション (RESTlets、Servlets、および/または JSP) を使用してサーバー側で処理できます。

そこに良い解決策はありますか?または、PUT を POST に変更する必要がありますか?

4

1 に答える 1

1

JavaScript を使用した従来のフォームを使用して PUT を実行できます。唯一の秘訣は、一時的なメッセージを点滅させることです。私は、この種のもののために一種の一時的なセッション状態を使用する Web フレームワークを見てきました。それが利用できない場合は、一時的なセッションをデータベースに保存し、Cookie を介して参照するという方法があります。これは簡単なことではありません。そのため、この状況で Web フレームワークが本当に役立つのです。

典型的なセットアップは次のように簡単です。

$('form').submit(function () {
  $.ajax({
    url: 'service/api',
    data: $('form').serialize(),
    type: 'POST'})
  .done(function () {
      // perform redirect
  });

サーバー側では、一時的なセッション状態を設定し、完了したら削除します。

于 2013-09-16T18:04:07.197 に答える