2012-05-29 28 views
0

用戶通過舊格式的鏈接打開文檔http://server/db.nsf/VIEW_UNID/DOC_UNID。表單中的屬性設置爲打開XPage。本地Domino鏈接和XPage

這些鏈接的來源是由「通用代理」生成的電子郵件通知。它只是發送鏈接到文檔。它不知道,什麼形式與XPage相關聯,因此它會生成通用鏈接而不是「/page.xsp & documentId = ...」。

問題:在客戶端計算的相對鏈接不起作用 - < a href = "/page.xsp?params">應該更加有效 - 在頁面加載時沒有往返並且容易計算。他們評估爲http://server/db.nsf/0/page.xsp?params,自然以404錯誤結束。

XPage包含「幫助」部分,RT字段包含文本,圖像和鏈接的另一個文檔是什麼。當從另一個XPage - view(/page.xsp)打開XPage時,該RT字段中的相關鏈接工作,但從通知鏈接(/ 0/UNID)重定向時失敗。

問題:如何通過舊式URL打開重定向的文檔/視圖後,將瀏覽器的地址欄有效重置爲擴展XPages格式http://server/db.nsf/page.xsp?documentId=DOC_UNID

+1

爲什麼您的代理不是用* $$ OpenDominoDocument.xsp *創建鏈接?順便說一句:鏈接*/page.xsp&params *無法正常工作。相反,它應該是*/page.xsp?params *。 –

+0

@SvenHasselbach:並非每個應用程序都基於XPage。而且順便說一句:你是對的,我只是在這裏輸入它作爲例子... –

+0

請澄清你的問題,並修復你的問題(「&」與「?」)的網址。 – leyrer

回答

1

主要問題是服務器端(SSJS評估)和客戶端(通過瀏覽器評估)的相對鏈接不一致。在通過舊式鏈接打開文檔的情況下,我通過簡單重定向解決了我的問題。

<?xml version="1.0" encoding="UTF-8"?> 
    <xp:view xmlns:xp="http://www.ibm.com/xsp/core"> 
     <xp:eventHandler event="onClientLoad" submit="false"> 
      <xp:this.script><![CDATA[var url = "#{javascript:context.getUrl()}"; 
    var l = window.location; 
    if (url != l) { 
     window.location.replace(url); 
    } 
    ]]></xp:this.script> 
    </xp:eventHandler> 
</xp:view> 

簡而言之,如果打開的URL與內部URL不同(由XSP引擎解析),瀏覽器會重定向以更正URL。這解決了我們使用內聯圖像(圖像資源)和附件時遇到的許多問題。

0

嘗試使用「./page.xsp & params」或../如果您想回到根目錄 - 我注意到IBM在編碼方面也是這樣做的。希望這可以幫助。

+0

用戶可以打開正確的鏈接頁面,所以你的意見將評估爲http://server/page.xsp或http://server/path/page.xsp ... –

+0

也許我誤解了你的問題,是嗎?有可能提供一個示例代碼,或者進一步闡明「通過舊式URL打開重定向文檔/視圖」的含義?它們是使用LS代碼生成還是由最終用戶在筆記文檔或公式語言等中生成的?客戶端計算的相關鏈接不起作用,請澄清一下?這些鏈接是由最終用戶在文檔上計算還是以表單計算? – pipalia

0

您是否嘗試在您的XPages中設置pageBaseUrl屬性?這將有助於修復relativ鏈接:

<xp:this.pageBaseUrl> 
    <xp:baseUrl> 
     <xp:this.href><![CDATA[#{javascript:"http://stackoverflow.com/"}]]></xp:this.href> 
    </xp:baseUrl> 
</xp:this.pageBaseUrl> 

另一個想法是做一個重定向在beforePageLoad -event中的XPage如果URL是老式的風格。

+0

是的,這是我在我的問題中想到的。我認爲只是網站的網址將無法正常工作,壽。你會建議在baseUrl屬性中保留url參數和錨點,如果有的話? –

+0

我不明白你究竟想要實現什麼:爲什麼需要添加原始URL參數的相對鏈接?這樣的鏈接是怎樣的?你能給個例子嗎? –