xpages 应用程序中的表达式语言原型

Expression language protoyping in xpages app

在一个应用程序中,我通过字符串属性文件提供多种语言。

在菜单中,link 中的引用可能如下所示:

<xp:link
    text="#{strings.menu_label_mandate_request}"
    title="#{strings.menu_label_mandate_request}"
    value="/mandate.xsp" styleClass="plainLink">
</xp:link>

这工作正常。

现在我想在 java class 中定义 link 并通过重复控件循环遍历它,但要保持多语言支持。

在我的菜单 class 中,我创建了一个 Page 对象数组并设置了如下属性:

this.navigation = new ArrayList<Page>();
        this.navigation.add(new Page("menu_label_mandate_request", "mandate.xsp", "fa fa-users", false));
...

我在 xsp 上添加了一个重复控件以启动 class(通过托管 bean):

<xp:repeat id="rptNavigation" rows="30"disableOutputTag="true" value="#{javascript:menu.navigation}" var="nav">

但是我在设置正确的原型时遇到了问题(如果可能的话):

<xp:link
    text="#{strings.nav.label}"
    title="#{strings.nav.label}"
    value="/mandate.xsp" styleClass="plainLink">
</xp:link>

所以我收到错误消息: java.util.MissingResourceException: 找不到资源包 java.util.PropertyResourceBundle,键导航 找不到资源包 java.util.PropertyResourceBundle、键导航

有人知道我忽略了什么吗?

您正在表达动态值 nav 应该作为文字对象而不是引用。写入:

<xp:link
    text="#{strings[nav.label]}"
    title="#{strings[nav.label]}"
    value="/mandate.xsp" styleClass="plainLink">
</xp:link>