1

この記事 http://www-10.lotus.com/ldd/ddwiki.nsf/revisions/6A9EDD911827AA13852574EA00388F8F?OpenDocumentによると、 単純な検証はファイル アップロード コントロールに対して機能するはずです。extLib Form テーブルで使用しようとしています。

ユーザーがファイルを選択したことを確認したいのですが、サーバー側の検証でこれを機能させることができませんでした。カスタムバリデーターも使用しようとしましたが、まだ運がありません。その他の必須フィールドは問題ありませんが、アップロード コントロールはマークされていません。

ユーザーが実際にファイルを選択したことを確認する方法を知っている人はいますか?

4

2 に答える 2

5

検証は、クライアント側の検証に対してのみ機能します。いくつかの回避策があります:

  1. ファイルが添付されたかどうかを検証する最も簡単な方法は、検証フィールドをフォームに追加し、データソースのプロパティcomputeWithForm="onsave"を設定することです。ドキュメントを保存しようとすると、すぐに検証エラーがスローされ、保存が中断されます。検証フィールドは、次のような検証式を持つ単純な編集可能なフィールドです。

    @If(@Attachments = 0;@Failure("No File attached!");@Success)
    
  2. querySaveイベントでデータソースを確認します。

    if( document1.getAttachmentList("Body").isEmpty() ){
        var msg = new javax.faces.application.FacesMessage("No File added!");
        facesContext.addMessage( "No File!", msg );
        return false;
    }
    

これら 2 つの回避策は、ドキュメントが新しく作成された場合にのみ機能します。ファイルが添付されるとすぐに、これら 2 つのオプションは機能しなくなります。

既存のドキュメントを確認したい場合は、次の XSnippet を使用できます: http://openntf.org/XSnippets.nsf/snippet.xsp?id=replace-attachment-when-uploading-a-new-attachment

次に、要件に合わせて XSnippet を変更し、メッセージを追加する必要があります (2 番目の例を参照)。

お役に立てれば

スヴェン

于 2012-09-12T10:08:40.600 に答える
0

これは数か月前に尋ねられて回答されたことを認識していますが、今日同じ問題に対する回答を探していたときにこれを見つけました。

Sven の回答は直接には役に立ちませんでしたが、オプション #2 が私の解決策の最終的なヒントになりました。多分それは他の人にも役立つかもしれません:

まず第一に、私のページは標準のボタンを使用しています(編集可能なフィールドと一緒にいくつかの非表示フィールドを設定する必要があるため、「送信」タイプのボタンではありません)。したがって、最終的な保存が完了する前に、このスクリプトをボタン コードに追加しました。

var numAtts = myDocDatasource.getAttachmentList("Body").size();
if(numAtts == 0){
    var msg = new javax.faces.application.FacesMessage("You need to attach a file");
    facesContext.addMessage("File validation error", msg);
    return false;
}
//do some more stuff
...
myDocDatasource.save();

プロセスのその段階では、アップロードされたファイルはすでにデータソースの一部であるため、検証に関しては、fileUpload コントロールの内容は実際には問題ではないことを認識しなければなりませんでした。

ただし、この検証ステップの「タイミング」は少し驚くべきものです。少なくとも私の状況では、ファイルのアップロードが検証される前に他のフィールドの検証が行われます。errorMessages コントロールでは、最初に標準の検証エラーのみがリストされます。他のすべてのフィールドが正常に検証された後でのみ、fileUpload バリデーターがエラーを表示します。

于 2013-05-23T23:23:38.647 に答える