UPDATE底:問題來源查明的xpages:什麼可以停止代碼停止,同時保存頁面?
我有一個頁面,基於已經從應用程序的以前的優化版本剝離大部分計算領域的形式(這樣的文檔實際上可以通過computewithform功能),我在保存文檔時遇到了問題。我有Notes客戶端(以前的應用版本)中創建的文檔已轉換爲MIME,並且在新的xpages應用中創建的一些文檔(使用CKEditor)保存在富文本字段中,該字段被標記爲存儲爲MIME也是如此。
我有一個按鈕來「發佈」文檔。該代碼適用於在新應用程序中創建的文檔,但它似乎停止在以前的應用程序版本中創建的文檔的某處。
這裏的IE陷阱儘可能HTTP流量中有哪些:
A case that works:
/mydb.nsf/page.xsp?action=editDocument&documentId=353B2 HTTP POST 302 244 B 218 ms cliquer 0 31 0 187 0 1761
/mydb.nsf/xPublish?OpenAgent&docid=487A3447CFA36BF085257EE400626485 HTTP GET 302 190 B 141 ms cliquer 218 16 125 0 0 1620
http://myserver.com/mydb.nsf/dx/test_13col00 HTTP GET 200 text/html 55.71 Ko 312 ms cliquer 359 0 0 32 0 1308
A case that doesn't work:
http://myserver.com/mydb.nsf/page.xsp?action=editDocument&documentId=353BA HTTP POST 302 244 B 188 ms cliquer 0 32 0 156 0 156
/mydb.nsf/xPublish?OpenAgent&docid=E0E13322928B8F9685257EE400628B0A HTTP (Abandonned) 193 B < 1 ms cliquer 188 0 0 0 0 156
在代碼中的「發佈」按鈕是:
//set status
if(getComponent("publishLater1").getValue() == "1") {
pageDocument.replaceItemValue("status", "Scheduled Publication");
} else {
pageDocument.replaceItemValue("status", "To Be Published");
}
//so we know the document has been saved (for drafts, when cancelled)
pageDocument.replaceItemValue("hasBeenSaved", "1");
//init some fields (res_title, ...)
if(!(pageDocument.hasItem("res_title")) || pageDocument.getItemValueString("res_title")==""){
pageDocument.replaceItemValue("res_title", buildResTitle(pageDocument.getItemValueString("subject")));
}
//set VERKEY AND VERNUMBER if not already set
if(pageDocument.getItemValueString("VERKEY")==""){
pageDocument.replaceItemValue("VERKEY", @Unique());
}
if(pageDocument.getItemValueString("VERNUMBER")==""){
pageDocument.replaceItemValue("VERNUMBER", 1);
}
//save pageDocument
pageDocument.save();
//send to publish agent
//remove the lock doc
//unlockDoc(pageDocument.getDocument().getUniversalID());
//for scheduled publications, a LotusScript agent will do the work
var res=facesContext.getExternalContext().getResponse();
if(getComponent("publishLater1").getValue() == "0") {
// Now load the publish Agent
var baseUrl = @Left(facesContext.getExternalContext().getRequestContextPath(),".nsf") + ".nsf/";
facesContext.getExternalContext().redirect(baseUrl + "xPublish?OpenAgent&docid=" + pageDocument.getDocument().getUniversalID());
//res.sendRedirect(xPublish?OpenAgent&docid=" + pageDocument.getDocument().getUniversalID(), false);
} else {
//send to the drafts view, to show it has the clock icon in the draft view
context.redirectToPage("adminDrafts.xsp");
}
我就饒了LotusScript代理的細節被稱爲(xPublish),但該代碼中的重定向是這樣完成的:
Print "Location:" + db.Filepath + "/dx/" + res_title
根據IE的http日誌,在按鈕中運行代碼時,似乎有些事情不太正確,並且會導致放棄http post,因此對LotusScript代理的調用也會被放棄,而不會將用戶重定向到新發布的頁。相反,用戶會被重定向到這個網址:
http://myserver.com/mydb.nsf/page.xsp?action=editDocument&documentId=353BA
大這裏的問題是,這個頁面(草案版本)在LotusScript代理被刪除,使URL給出了一個錯誤頁面。
如果您想知道發佈代碼爲什麼在LotusScipt中,這是因爲我們還有一個計劃的代理程序,它每天運行併發布將來發布的「計劃發佈」。這是爲了避免必須同時維護SSJS和LotusScript代碼。
任何線索爲什麼發生這種情況?
UPDATE
好吧,這似乎代碼工作正常,但它在LotusScript代理不勝任的重定向。這是我用什麼來重定向到剛剛發佈的頁面:
Print "Location: http://ourserver.com/mydb.nsf/dx/" + res_title
它是在一個點的工作,但現在它似乎是導致問題。有趣的是代理可以正常使用我們從頭開始創建的文檔,但不適用於在以前版本的應用中創建的文檔......仍然不知道如何解決這個問題。從xpages的LotusScript做重定向的方法是什麼?