XPages:@DbName()从数据库文件路径中删除斜杠

XPages:@DbName()从数据库文件路径中删除斜杠,xpages,Xpages,我使用@DbName()获取notes数据库的名称和文件路径。不幸的是,文件路径和名称作为一个字符串返回,没有斜杠。例如,如果文件路径为“Dir1/Dir2/dbname.nsf”,则返回为“Dir1Dir2dbname.nsf”。有没有办法获得包含斜杠的文件路径?您是将其放在计算字段中还是在某些公式中使用? 这是另一种方法 database.getFilePath() 这将为您提供Dir/dbname应该将@dbname()函数调用用作列表数组。下面的示例详细介绍了如何使用以及获得的输出 代码

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

您是将其放在计算字段中还是在某些公式中使用? 这是另一种方法

database.getFilePath()

这将为您提供Dir/dbname

应该将@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>
如果您没有得到这些结果,请使用示例代码更新您的问题


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

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


您使用的是什么版本的Notes/Domino?我记得几年前(XPages的第一个beta版)有类似的情况。我使用的是安装了sp1(扩展库)的8.5.3版。“另一件要检查的事情是“\”是否在代码中被翻译为转义字符。”-这确实是问题所在。我使用的是var数据库=“#{javascript:@Subset(@DbName(),-1)}”;但是,已从数据库变量中删除反斜杠。我找到了一个解决方法,将公式@Subset(@DbName(),1)放入一个计算字段,并使用dojo获取值。var fp=“#{id:filename}”;var fpath=dojo.byId(fp).innerHTML;有没有更简单的方法来执行his?更简单的方法是使用var fpath=“#{javascript:escape(@Subset(@DbName(),-1))}”;。fpath包含%5C而不是反斜杠。太好了!很高兴看到您被排序。问题实际上与javascript有关。见我的上述评论。
Field 1 (@DbName as a string)   CN=testserver/O=testorg,subdir\Test.nsf
Field 2 (@DbName used as list)  subdir\Test.nsf on testserver
escape(database.getFilePath())