【问题标题】:XPages: @DbName() removes slashes from the database filepathXPages:@DbName() 从数据库文件路径中删除斜杠
【发布时间】:2013-05-15 15:06:54
【问题描述】:

我正在使用@DbName() 来获取notes 数据库的名称和文件路径。不幸的是,文件路径和名称作为一个没有斜杠的字符串返回。例如,如果文件路径是“Dir1/Dir2/dbname.nsf”,则返回为“Dir1Dir2dbname.nsf”。有什么方法可以获取包含斜杠的文件路径?

【问题讨论】:

  • 您使用的是哪个版本的 Notes/Domino?我记得几年前的事情(XPages 的第一个 beta 版本)。
  • 我使用的是安装了 sp1(扩展库)的 8.5.3 版。

标签: xpages


【解决方案1】:

@DBName() 函数调用应用作列表数组。以下示例详细说明了如何使用以及您获得的输出。

代码

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
    <xp:table><xp:tr>
    <xp:td>
        <xp:label value="Field 1 (@DbName as a string) " id="label1">
        </xp:label>
    </xp:td><xp:td>
        <xp:text escape="true" id="computedField1" value="#{javascript:return @DbName();}">
        </xp:text>
    </xp:td>
    </xp:tr><xp:tr>
    <xp:td>
        <xp:label value="Field 2 (@DbName used as list)" id="label2">
        </xp:label>
    </xp:td><xp:td>
        <xp:text escape="true" id="computedField2">
        <xp:this.value><![CDATA[#{javascript:var database = @Subset(@DbName(), -1);
            var server = @Name("[CN]", @Subset(@DbName(), 1));
            return database + " on " + server
            }]]></xp:this.value>
        </xp:text>
    </xp:td></xp:tr>
    </xp:table>
</xp:view>

输出

Field 1 (@DbName as a string)   CN=testserver/O=testorg,subdir\Test.nsf
Field 2 (@DbName used as list)  subdir\Test.nsf on testserver

如果您没有得到这些结果,请使用示例代码更新您的问题。

要检查的另一件事是“\”是否在您的代码中被翻译为转义字符。

【讨论】:

  • "要检查的另一件事是“\”是否在您的代码中被翻译为转义字符。" - 这确实是问题所在。我正在使用 var database = "#{javascript:@Subset(@DbName(), -1)}";但是,反斜杠已从数据库变量中删除。我通过将公式 @Subset(@DbName(), 1) 放入计算字段并使用 dojo 获取值找到了一种解决方法。 var fp = "#{id:filename}"; var fpath = dojo.byId(fp).innerHTML;有没有更简单的方法?
  • 更简单的方法是使用 var fpath = "#{javascript:escape(@Subset(@DbName(), -1))}";。 fpath 包含 %5C 而不是反斜杠。
  • 太棒了!很高兴看到你被排序。
【解决方案2】:

我经历过类似的事情,修复确实是使用以下内容来确保反斜杠被转义(而不是被解释为转义字符):

escape(database.getFilePath())

【讨论】:

    【解决方案3】:

    你是把它放在一个计算域中还是在某个公式中使用它? 这是另一种方式。

    database.getFilePath()

    那应该给你 Dir/dbname

    【讨论】:

    • 这个问题实际上与javascript有关。请参阅我上面的评论。
    猜你喜欢
    • 1970-01-01
    • 2019-08-06
    • 1970-01-01
    • 2016-10-23
    • 2014-08-22
    • 2018-08-15
    • 1970-01-01
    • 2015-10-16
    • 2014-02-04
    相关资源
    最近更新 更多