2012-09-11 136 views
1

根據這篇文章 http://www-10.lotus.com/ldd/ddwiki.nsf/revisions/6A9EDD911827AA13852574EA00388F8F?OpenDocument 簡單的驗證應該適用於文件上傳控件。我試圖在extLib表格中使用它。文件上傳驗證xpages

我想驗證用戶選擇了一個文件,但一直沒有能夠得到這個在服務器端驗證工作。也嘗試使用自定義驗證器,但仍然沒有運氣。其他必填字段標記爲正常,但不包含上傳控件。

有誰知道如何驗證用戶實際選擇了一個文件嗎?

回答

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; 
    } 
    

這兩種解決方法是隻如果文檔是新創建的,則工作。一旦連接了一個文件,這兩個選項就不再起作用了。

如果你想檢查已經存在的文件,你可以在這裏使用這個XSnippet: http://openntf.org/XSnippets.nsf/snippet.xsp?id=replace-attachment-when-uploading-a-new-attachment

你就必須修改XSnippet以滿足您的要求,並添加一條消息(如圖所示在第二個例子)。

希望這有助於

斯文

+0

好的,謝謝你的回覆。我們預計也許這是答案。 我們希望我們可以將自動警告用於表單表格中的必需字段,但是我們還是需要使用客戶端javascript來模擬功能。 。 。 – Fred

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驗證器纔會顯示其錯誤。