0

これは、すべての Web 開発者にとってよく知られた問題です。この問題に対する適切な解決策を見つけようとした限り、何もありませんでした (または、少なくとも見つけることができませんでした)。

次のように仮定します。

ユーザーが期待どおりに行動しない。私が取り組んでいる実際のプロジェクトでは、Web ポータル内のナビゲーションを使用しています。しかし、ユーザーがブラウザの戻るボタンを使用すると、すべてが危険にさらされ[?]、結果は常に予測可能ではありませんでした。

Struts フレームワークを使用し、back-url をフォームに保存しました。back-url が必要な場所では、このフォームの back-url からレンダリングされています。この情報には 1 つのフィールドしかないため、複数のステップに戻ることはできませんでした。

「struts-flow」を変更すると (別のフォームが使用される可能性があります)、この情報は失われます。

ユーザーがあえてWeb アプリケーション内のどこかにブックマークを設定した場合、この情報は設定されていない可能性があり、結果は予測不能であるか、十分に柔軟ではありません。

私の「解決策」

ユーザーがアクセスしたすべてのナビゲーション関連ページをスタックのようなストレージに保存していました。これは、ナビゲーション パスが収集され、後のナビゲーションのために保存されることを意味します。

バック ナビゲーションが関係する webapp 内の任意のページで、スタック コンテンツを URL にレンダリングする自作のタグを使用しました。

それだけです。このバック URL がクリックされると、ユーザーがクリックしたバック URL のコンテンツがスタックに格納されます (バック リンクがレンダリングされると、スタックからのすべての情報が保持されます)。

これは非常に明確です。なぜなら、リンクのクリックは明確な状態であり、Web 開発者はユーザーが今この瞬間にどこに「いる」かを正確に知っているからです。回)。次に、この新しい状態に基づいてナビゲーション スタックが構築されます。

履歴書: これが最善の解決策ではないことが明らかになりました。ただし、ページパラメーターやその他の便利なものなどの追加情報をスタックに保存できます (さらなる開発が可能です)。

では、この問題に対するあなたの解決策は何でしたか?

乾杯、

マナ

4

1 に答える 1

1

スタックソリューションは面白そうに聞こえますが、ユーザーが別のタブを「並行して」ナビゲートするか、ブックマークを使用することを選択した場合、おそらく壊れます。

ユーザーごとにこのすべての状態を維持する必要がある理由がよくわかりません。理想的には、WebはRESTの原則に従い、完全にステートレスである必要があります。したがって、単一のURLは、各ユーザーのナビゲーション履歴を保持する必要なしに、単一のリソースを識別する必要があります。

WebアプリがAJAXに大きく依存している場合は、GMailのようなものを実装してみることができます(確かに、それほど簡単ではありません...)。インターフェースの各変更はページURLの変更に反映されます。したがって、各ページは現在のURLで識別され、ユーザーは同時にナビゲートするか、通常どおり戻るボタンを使用できます。

于 2008-09-16T22:13:33.293 に答える