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

Fra*_*uth 2 xpages

应用程序使用机制按类别过滤文档 - 查找所有可用类别(仅几个)并将其提供给大纲组件.然后,每个大纲条目添加视图数据源中使用的URL参数,以按类别过滤文档.问题在于非ANSI字符(国际).在许多情况下,它按预期工作,但某些代理禁止在URL中使用这些字符.

解决方法是使用url的编码/解码,使得视图数据源的Category属性中的SSJS代码变得复杂:而不是简单地context.getUrlParameter("category");需要解码参数,这是"复杂的",例如这样:http:// www.mkyong.com/java/how-to-encode-a-url-string-or-form-parameter-in-java/

是否有任何XPage特定的方法来简化这个?

Sve*_*ach 12

旧RFC规范中不允许使用非ANSI字符,因此必须对其进行编码.有一些名为escapeunescape的 SSJS函数,但它们无法正常工作(最后使用8.5.3进行测试)

但您可以使用Java代替.在向URL添加参数之前,您可以使用此SSJS:

java.net.URLEncoder.encode (" ABC DEF", "utf-8")
Run Code Online (Sandbox Code Playgroud)

这将为您提供%20ABC%20DEF的结果,并可作为参数添加到您的URL(fe ?category =%20ABC%20DEF).

要解码SSJS中的参数,可以使用它来还原它

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