2

これは、私がそれを実装するようになった今、私が疑問に思っていることです。

両側で同じ正規表現を使用する以外に、Javascript と Java で同等の検証 (パスワード/ユーザー名のルール) を行う方法はありますか?

正規表現を使用することもできますが、より高度なものを使用したいと思います。JQuery を使用して一度それを行ったことを覚えており、すぐにもう一度検討します。もちろん、その道をたどると、サーバー側の検証は別の方法で実装されます。サーバー側の検証が正しい限り、これは実際には問題ではありませんが、両方の側でまったく同じルール セットがあることを知っておくとよいでしょう。

助言がありますか?


編集:

私は、Grails が妥当性検査をうまくサポートしていることを覚えているようです。Grails は使用していませんが、Groovy を使用しています。Grails の外部で同じ種類のものを取得するために使用できる依存関係はありますか?

4

2 に答える 2

-1

Java を使用して、すべての検証ルールをサーバー側に配置することをお勧めします。これは複雑になる可能性があること、または一意のユーザー名などのサーバー側からのデータが必要になることが多いことを忘れないでください。次に、js で ajax を使用してサーバー側の特定のサービスを呼び出すことができます。これにより、入力されたものすべてに対して検証ルールが呼び出され、フォームに通知が出力されます。

検証ルールが必須フィールドのようにマイナーな場合は、それを js に配置し、永続化レイヤーに null 不可のフィールドを配置します。

編集 - コメント

この回答の意図は、フロントエンドで検証されたかどうかにかかわらず、処理されたデータが常に正しいことを確認するために、検証がバックエンドに存在する必要があることを示すことでした。バックエンドでは、フロントエンドでは利用できないデータにアクセスすることが可能であり、データを処理 (保存など) し、場合によってはロジック (他の場所で使用される API ライブラリなど) を再利用する複雑な場所があります。

これは、通常、バックエンドが API を提供する完全に別のレイヤー/デプロイ/マイクロサービス上にあることも、今日ではより関連性があります。

フロントエンドの検証はミラーリングできますが、通常は単純なもののみを追加します。フロントエンドで検証する主な理由は、ネットワーク呼び出しとバックエンド処理を節約し (たとえば、パスワードの長さを確認するための呼び出しを行ったり、失敗する不良データを送信したりする必要がないなど)、より優れたユーザーエクスペリエンスを提供するためです (たとえば、検証する理由がないため)。ユーザーがフォームに 20 個のフィールドを入力し、サーバーからの長いメッセージとそれぞれのエラーなどを待ちます)。ロジックは 1 回記述すれば、1 か所で簡単に更新できる必要があります。

于 2013-10-26T15:55:39.200 に答える