Lotus Domino BS开发:路径地址传递参数与处理中文乱码问题

版权申诉
0 下载量 84 浏览量 更新于2024-08-13 收藏 17KB DOCX 举报
"Lotus Domino BS开发中路径地址传递值的方法和解决乱码问题" 在Lotus Domino的浏览器(Browser-Side, BS)开发中,通过路径地址传递值是一项常见的需求。这种方式允许我们向表单或者代理传递参数,以便在新的窗口或当前页面执行特定的操作。以下是一种实现这一功能的常见方法: 首先,我们可以获取当前页面的完整URL,这可以通过JavaScript的`window.location.href`来实现。例如: ```javascript var b = window.location.href; // 获取全路径 ``` 然后,如果需要提取`.nsf`文件的路径,可以使用字符串操作方法: ```javascript var URL = b.substring(0, b.indexOf('.nsf') + 4); // 提取.nsf前的路径 ``` 在表单设计中,可以利用内置HTML和JavaScript来处理传递的值。例如,创建一个计算字段,根据不同的条件决定要传递的值: ```html <script language='javascript'> var NewDoc = "<计算的值>"; </script> ``` 接着,根据`NewDoc`的值,决定打开新窗口并传递不同的参数: ```javascript if (NewDoc == "1") { var key = document.all("date_budget").value; window.open("/weboa/aa.nsf/代理名?OpenAgent&Key=" + escape(key)); document.forms[0].调用保存代理的按钮名称.click(); } else { var key = document.all("city_address").value; window.open("/weboa/aa.nsf/代理名?OpenAgent&Key=" + escape(key)); } ``` 在新窗口的代理中,我们需要获取传递过来的参数,这可以通过Notes API完成: ```lotusscript Dim s As New NotesSession Dim doc As NotesDocument Dim Key As String Set doc = s.DocumentContext '这里的doc是虚拟的,不是当前文档的doc Key = Trim(StrRight(doc.Query_String_Decoded(0), "Key=")) '获取Key参数 ``` 然而,在传递包含中文字符的值时,可能会遇到乱码问题。这通常与编码设置有关。确保URL编码使用的是UTF-8,并在接收端正确解码。例如,当使用JavaScript的`encodeURIComponent`函数编码URL参数,然后在服务器端使用相应的解码方法。 对于上述代码中的问题,可以尝试修改打开新窗口的代码,使用`encodeURIComponent`来编码中文参数: ```javascript var name = encodeURIComponent("陈华"); var age = encodeURIComponent("26"); var zy = encodeURIComponent("计算机"); window.open(URLPath + "?OpenForm&name=" + name + "&age=" + age + "&zy=" + zy, "", "status=no,resizable=yes,left=200,top=140,width=700,height=500"); ``` 在表单中,确保接收这些参数的字段有正确的编码设置,以防止乱码。同时,检查服务器和客户端的字符集设置是否一致,这通常是导致乱码的主要原因。 Lotus Domino BS开发中,通过路径地址传递值涉及JavaScript、Notes API以及可能的编码处理。理解这些概念并妥善应用,可以帮助你有效地在不同页面和组件间传递信息。