2012-04-12 38 views
2

應用程序使用按類別過濾文檔的機制 - 查找所有可用的類別(僅少數),並將其提供給Outline組件。然後每個大綱條目添加視圖數據源中使用的URL參數以按類別過濾文檔。 問題與非ANSI字符(國際)。在許多情況下,它按預期工作,但一些代理禁止在URL中使用這些字符。與數據源一起使用的參數的最簡單的URL編碼/解碼模式

解決方法是使用url的編碼/解碼,是什麼讓視圖數據源的Category屬性中的SSJS代碼複雜化:取代簡單的context.getUrlParameter("category");需要解碼「複雜」的參數,例如這種方式:http://www.mkyong.com/java/how-to-encode-a-url-string-or-form-parameter-in-java/

是否有任何XPage的具體方法來簡化這?

回答

11

在舊的RFC規範中不允許使用非ANSI字符並且必須進行編碼。有一個名爲逃脫UNESCAPE SSJS功能,但它們工作不正常(上次測試與8.5.3)

但是你可以使用Java來代替。添加一個參數的URL之前,您可以使用此SSJS:

java.net.URLEncoder.encode (" ABC DEF", "utf-8") 

這會給你的%的結果20ABC%20DEF並且可以添加到您的網址作爲參數(FE 類= %20ABC%20DEF)。

爲了解碼在SSJS參數,您可以通過使用

var hlp = context.getUrlParameter("category"); 
var param = java.net.URLDecoder.decode (hlp, "utf-8") 
恢復它