1

かなり複雑な入力モーダルを含む Web アプリケーション (Java EE バックエンド) に取り組んでいます。この入力モーダルにより、ユーザーはデータをキャプチャできますが、必須フィールド、特定の値が入力された場合にのみ使用可能なフィールドなど、(JavaScript) 制限がたくさんあります。

この機能を外部システムに公開し、このデータをサーバーに送信できるようにする必要があります。これらの外部システムは、Web ベースでもクライアント ベースでもかまいません (ただし、クライアントはインターネットにアクセスできると想定できます)。私が最初に考えたのは、サービスを通じてこれらのシステムに必須のようなフィールドやものの定義を提供し、必要に応じて入力モーダルをレンダリングさせることです。ただし、フィールドのタイプと制限は、今後数か月の開発中にかなり変更される可能性が高いため、これには抵抗があります。これらの外部システムには異なるデプロイ タイムラインがあり、これを機能させるには、まずすべてのシステムでこれらの制限を処理するすべてのロジックを複製し、次にデプロイを同期する必要があります。

提案されている代替案は、外部システムが標準 HTTP を介して私のモーダルを呼び出し、iframe または埋め込みレンダリングでレンダリングすることです。これでこれまでの不満はすべて解消されましたが、少し不安な気持ちが残ります。

私たちが考えていない代替案はありますか?おそらく、さまざまなプラットフォーム用の既存のレンダリング ライブラリを備えた何らかの UI スキーマでしょうか? 2 番目の提案についてどう思いますか、主な懸念事項はありますか、それともこれが「最善の」解決策ですか?

編集:明確にするために、受信データを信頼することはできないため、フロントエンドの決定に関係なく、もちろんバックエンドの検証を実行します。

4

2 に答える 2

0

以前のいくつかのプロジェクトで同じ問題に直面しました。この経験に基づいて、クライアント側からゴミがコミットされるのを避けるために、サーバー側の検証を実装する必要がある可能性が高いと正直に言えます。利用可能な検証フレームワークの 1 つを選択できます。私はApache Commons Validatorを使用し、それが適切だと考えています。または、独自の検証フレームワークを実装することもできます。一方、クライアント側の事前検証、オートコンプリート、およびデータ検索は、人間のユーザーを満足させるために必要なソリューションです。コードの重複については考慮せず、ビジネスの観点からシステムを正しい方法で作成してください。

于 2012-07-12T15:49:55.463 に答える
0

あなたが言及した制約(必須フィールドなど)は、実際にはユーザーインターフェイスとは何の関係もありません。また、バックエンドで Web コンテンツをレンダリングすることはお勧めできません。

あなたの最初の提案は良いアイデアのように思えます。あなたが言及した問題を解決する方法は次のとおりです。

  • バックエンドですべての検証を行い、UI の現在の状態 (フィールド名、タイプ、有効/無効、エラー メッセージなど) を表すモデル オブジェクトをクライアントに送信します。
  • クライアントを可能な限り愚かに保ちます。ウィンドウ/Webページでのモデルのレンダリングのみを担当する必要があります。フィールドが変更され、検証が必要な場合は常に、検証のためにモデルをバックエンドに送信し、表示される新しいモデルを取得します。(変更されたフィールドのみを返すことで、これを最適化できます。)

このようにすると、検証ロジックが 1 か所 (バックエンド) に保持され、クライアントを変更する必要がほとんどなくなります。

于 2012-07-12T10:39:17.103 に答える