2013-05-15 39 views
4

我正在使用@DbName()来获取Notes数据库的名称和文件路径。不幸的是,文件路径和名称作为一个字符串返回,没有斜杠。例如,如果文件路径是“Dir1/Dir2/dbname.nsf”,则将其作为“Dir1Dir2dbname.nsf”返回。是否有任何方法获得包含斜杠的文件路径?XPages:@DbName()从数据库文件路径中删除斜杠

+1

什么的Notes/Domino的版本是你使用?我记得几年前(XPages的第一个测试版)。 –

+0

我使用的版本8.5.3安装了sp1(扩展库)。 –

回答

3

的@DbName()函数调用应作为一个列表阵列。以下示例详细介绍了如何使用以及您获得的输出。

CODE

<?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 

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

要检查的另一件事是如果在代码中将“\”转换为转义字符。

+1

“另一件要检查的事情是,如果在代码中将”\“转换为转义字符。” - 这确实是问题所在。我正在使用var database =“#{javascript:@Subset(@DbName(),-1)}”;但是,反斜杠已从数据库变量中删除。通过将公式@Subset(@DbName(),1)放入计算字段并使用dojo获取值,我找到了一种解决方法。 var fp =“#{id:filename}”; var fpath = dojo.byId(fp).innerHTML;有没有更简单的方法来做他的? –

+1

更简单的方法是使用var fpath =“#{javascript:escape(@Subset(@DbName(),-1))}”;. fpath包含%5C而不是反斜杠。 –

+0

太棒了!很高兴看到你被排序。 –

1

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

database.getFilePath()

这应该给你DIR/DBNAME

+0

这个问题实际上与JavaScript有关。看到我上面的评论。 –

2

我都经历过类似的东西,并修复确实使用以下,以确保反斜杠转义(而不是被解释为转义字符):

escape(database.getFilePath())