根據這篇文章 http://www-10.lotus.com/ldd/ddwiki.nsf/revisions/6A9EDD911827AA13852574EA00388F8F?OpenDocument 簡單的驗證應該適用於文件上傳控件。我試圖在extLib表格中使用它。文件上傳驗證xpages
我想驗證用戶選擇了一個文件,但一直沒有能夠得到這個在服務器端驗證工作。也嘗試使用自定義驗證器,但仍然沒有運氣。其他必填字段標記爲正常,但不包含上傳控件。
有誰知道如何驗證用戶實際選擇了一個文件嗎?
根據這篇文章 http://www-10.lotus.com/ldd/ddwiki.nsf/revisions/6A9EDD911827AA13852574EA00388F8F?OpenDocument 簡單的驗證應該適用於文件上傳控件。我試圖在extLib表格中使用它。文件上傳驗證xpages
我想驗證用戶選擇了一個文件,但一直沒有能夠得到這個在服務器端驗證工作。也嘗試使用自定義驗證器,但仍然沒有運氣。其他必填字段標記爲正常,但不包含上傳控件。
有誰知道如何驗證用戶實際選擇了一個文件嗎?
此驗證僅適用於客戶端驗證。有一些解決方法:
最簡單的方法來驗證,如果是附加的文件是一個確認字段添加到您的形式和設置屬性computeWithForm =「的OnSave」您的數據源的。只要您想保存文檔,就會拋出驗證錯誤,並且保存被中斷。該驗證領域是一個驗證公式是這樣一個簡單的編輯字段:
@If(@Attachments = 0;@Failure("No File attached!");@Success)
檢查您的數據源中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以滿足您的要求,並添加一條消息(如圖所示在第二個例子)。
希望這有助於
斯文
我知道,這已被要求,並在幾個月前回答,但今天我一直在尋找的答案,同樣的問題時,我發現這一點。
雖然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驗證器纔會顯示其錯誤。
好的,謝謝你的回覆。我們預計也許這是答案。 我們希望我們可以將自動警告用於表單表格中的必需字段,但是我們還是需要使用客戶端javascript來模擬功能。 。 。 – Fred