应用程序使用按类别过滤 View 中的文档的机制 - 查找所有可用类别(仅少数)并将其提供给大纲组件。然后,每个大纲条目添加在 View 数据源中使用的 URL 参数,以按类别过滤文档。 问题出在非 ANSI 字符(国际)。在许多情况下,它可以按预期工作,但某些代理禁止在 URL 中使用这些字符。
解决方法是使用 url 的编码/解码,这使得 View 数据源的 Category 属性中的 SSJS 代码变得复杂:而不是简单的 context.getUrlParameter("category");
需要解码参数,这很“复杂”,例如这样: http://www.mkyong.com/java/how-to-encode-a-url-string-or-form-parameter-in-java/
是否有任何 XPage 特定方法可以简化此操作?
最佳答案
旧版 RFC 规范中不允许使用非 ANSI 字符,必须对其进行编码。有名为 escape 和 unescape 的 SSJS 函数,但它们无法正常工作(上次使用 8.5.3 进行测试)
但是您可以使用 Java。在给URL添加参数之前,可以使用这个SSJS:
java.net.URLEncoder.encode (" ABC DEF", "utf-8")
这将为您提供 %20ABC%20DEF 结果,并且可以作为参数添加到您的 URL(例如 ?category=%20ABC%20DEF)。
要解码 SSJS 中的参数,您可以使用以下命令恢复它
var hlp = context.getUrlParameter("category");
var param = java.net.URLDecoder.decode (hlp, "utf-8")
关于xpages - 与数据源一起使用的参数的最简单 URL 编码/解码模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10124901/