【问题标题】:Xpages: how to store a string as a resource bundle in filesXpages:如何将字符串作为资源包存储在文件中
【发布时间】:2016-07-06 20:31:39
【问题描述】:

我的菜单是由一个数据结构驱动的,我想将它作为一个文件存储在我的数据库的资源中。但是,我似乎无法将多行字符串存储(或不知道如何存储)作为文件资源。

我的字符串将如下所示:

[
 {
   "mnuNme": "by Author",
   "mnuTyp": "1",
   "mnuTrg": "xpNavigator3"
   },
   {
   "mnuNme": "by Location",
   "mnuTyp": "1",
   "mnuTrg": "xpView02"
  }
] 

有没有办法将它存储为属性。

【问题讨论】:

    标签: properties xpages custom-controls


    【解决方案1】:

    您正在寻找存储和维护 JSON 数据菜单的地方。

    您可以为此使用服务器端 JavaScript 库。
    将您的菜单定义分配给一个变量。 这样您就包含了一个语法控件,并且您不需要解析 JSON 字符串,因为它已经是一个 JavaScript 数组/对象。

    例子:

    服务器端 JavaScript 库“menu.jss”:

    var menu = [
                {
                   "mnuNme": "by Author",
                   "mnuTyp": "1",
                   "mnuTrg": "xpNavigator3"
                },
                {
                   "mnuNme": "by Location",
                   "mnuTyp": "1",
                   "mnuTrg": "xpView02"
                }
               ];
    

    XPage

    <?xml version="1.0" encoding="UTF-8"?>
    <xp:view xmlns:xp="http://www.ibm.com/xsp/core">
        <xp:this.resources>
            <xp:script
                src="/menu"
                clientSide="false">
            </xp:script>
        </xp:this.resources>
        <xp:repeat
            id="repeat1"
            rows="0"
            var="entry"
            value="#{javascript:menu}">
            <xp:text
                escape="true"
                id="computedField1"
                value="#{entry.mnuNme}">
            </xp:text>
            <br />
        </xp:repeat>
    </xp:view>
    

    【讨论】:

    • 对此要注意一点-您正在使用全局变量-取决于您的持久性设置/服务器性能/等-在某些时候,由于垃圾收集,该全局变量可能会变得未定义/和/或者如果页面被写入磁盘以保持持久性。全局 javascript 服务器端变量应被视为禁忌。仅使用 SSJS 包含调用函数等。例如,您可以创建一个名为 menu() 的函数,该函数返回字符串的内容,然后在您的值中调用 menu()(即 value="#{javascript:return menu( );}" 并且在规模上会更安全。
    【解决方案2】:

    为什么一定要多行?看来您正在尝试存储 JSON - 将其缩小并存储为单行。在其他地方保留一个可编辑的版本作为您的主版本,并在您想要部署时重新缩小。

    但是,如果你真的想这样做,我相信正确的语法是:

    menuStructure=[ \
     { \
       "mnuNme": "by Author",\
       "mnuTyp": "1",\
       "mnuTrg": "xpNavigator3"\
       },\
       {\
       "mnuNme": "by Location",\
       "mnuTyp": "1",\
       "mnuTrg": "xpView02"\
      }\
    ]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多