2

私は典型的な階層化アーキテクチャを備えたWebアプリケーションを開発しています。

データベースからドメインモデルオブジェクトを取得するDAOレイヤー。

このレイヤーは、これらのオブジェクトを使用して一部のビジネスオペレーションを実行するサービスレイヤーと通信します。

Webレイヤー(Spring Controllers)は、サービスレイヤーを使用して、ドメインモデルオブジェクト(またはそれらのコレクション)を取得し、それらをビューレイヤーに渡します。

ビューレイヤーは、JSTLを使用してデータを表示する単純なJSPか、JSONオブジェクト(Jacksonライブラリを介してJSONに変換されたドメインオブジェクト)の形式でAJAXを介してデータの一部を取得するJSPのいずれかです。

私は次のことについて研究してきました:

ユーザーに表示するために、dbフィールドを別の形式に変換する必要があることがよくあります。たとえば、日付がタイムスタンプとして保存されていて、フォーマットされた日付(dd / mm / yyyyなど)として表示したい場合があります。

また、逆のことを行う必要があります。値(通常はユーザー入力)をドメインモデルオブジェクトのプロパティの形式に変換します。

私の質問は、この種の変換をどこで行うべきかということです。特にJSONデータの場合、AJAX応答で既にフォーマットされている必要があります。Javascriptでフォーマットする必要があるとは思いませんが、正しいですか?

前もって感謝します。

4

1 に答える 1

2

非常に頻繁に、db フィールドを別の形式に変換してユーザーに表示する必要があります。たとえば、日付がタイムスタンプとして保存されている可能性があり、フォーマットされた日付 (例: dd/mm/yyyy) として表示する必要があります。

また、逆のことを行う必要があります。値 (通常はユーザー入力) をドメイン モデル オブジェクトのプロパティの形式に変換します。

私の質問は、この種の変換をどこで行うべきですか?

私の意見では、すべてのデータ形式の変換は、ビューまたは共同オブジェクトで行う必要があります。モデルまたはサービス レイヤーは、このアクティビティを実行するべきではありません。モデルでこれを実行すると、モデルによって公開されたインターフェイスが 1 つのビューだけに結合されるため、設計が適切ではありません。また、ビューを変更するのが難しくなり、モデルも変更する必要があります。

ビューがドメインオブジェクトのコンテンツを適切にフォーマットすることを保証するために特定のコンバーターが書かれている、適切に作成されたJSFアプリケーションを参照できます(Java EEを使用していると述べたため)。

特に JSON データの場合、AJAX 応答で既にフォーマットされている必要があります。Javascript でフォーマットする必要はないと思います。よろしいですか?

それは、ビューをどのように表示するかによって異なります。ビューの表現が、サーバーがクライアントにフォーマットされたデータを提供する必要があるというものである場合、サーバーはこれを行う必要があります。ただし、ほとんどのアプリケーションは、クライアント側のロジックもビューの一部として扱われる実用的なアプローチを採用しています。データが使用されるコンテキストに応じて、次のことができます。

  • サーバー上でデータをフォーマットします。特に、フォーマットされたデータがそれ以上変更せずにクライアント側で普遍的に使用される場合。
  • または、正規の形式でクライアントにデータを送信します。この形式は、データが使用されたり、ユーザーに表示されたりするコンテキストに基づいてフォーマットされます。
于 2011-07-14T01:21:47.150 に答える