Xpages 用于数据源的参数的最简单URL编码/解码模式

Xpages 用于数据源的参数的最简单URL编码/解码模式,xpages,Xpages,应用程序使用按类别过滤视图中的文档的机制——所有可用的类别(只有少数)都会被查找并提供给Outline组件。然后,每个大纲条目添加视图数据源中使用的URL参数,以按类别筛选文档。 问题在于非ANSI字符(国际)。在许多情况下,它的工作原理与预期一致,但一些代理禁止在URL中使用这些字符 解决方法是使用url的编码/解码,这使得ViewDataSource的Category属性中的SSJS代码变得非常复杂:而不是简单的context.getUrlParameter(“Category”)需要解码参

应用程序使用按类别过滤视图中的文档的机制——所有可用的类别(只有少数)都会被查找并提供给Outline组件。然后,每个大纲条目添加视图数据源中使用的URL参数,以按类别筛选文档。 问题在于非ANSI字符(国际)。在许多情况下,它的工作原理与预期一致,但一些代理禁止在URL中使用这些字符

解决方法是使用url的编码/解码,这使得ViewDataSource的Category属性中的SSJS代码变得非常复杂:而不是简单的
context.getUrlParameter(“Category”)需要解码参数,这是“复杂的”,例如:


是否有任何特定于XPages的方法来简化此过程?

旧的RFC规范中不允许使用非ANSI字符,必须对其进行编码。有名为escape和unescape的SSJS函数,但它们工作不正常(最后一次测试是在8.5.3中)

但是您可以使用Java来代替。在向URL添加参数之前,可以使用以下SSJS:

java.net.URLEncoder.encode (" ABC DEF", "utf-8")
这将为您提供一个%20ABC%20DEF的结果,并可以作为参数添加到您的URL中(f.e.?类别=%20ABC%20DEF)

要解码SSJS中的参数,可以使用

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